做网站如何写需求wordpress获得链接

pingmian/2025/10/8 10:26:10/文章来源:
做网站如何写需求,wordpress获得链接,长春仿站定制模板建站,网站备案当面核验主要知识点 babel读取代码的import语句算法#xff1a;bfs遍历依赖图为浏览器定义一个require函数的polyfill算法#xff1a;用记忆化搜索解决require函数的循环依赖问题 Quick Start GitHub#xff1a;https://github.com/Hans774882968/mini-webpack npm install npm…  主要知识点 babel读取代码的import语句算法bfs遍历依赖图为浏览器定义一个require函数的polyfill算法用记忆化搜索解决require函数的循环依赖问题 Quick Start GitHubhttps://github.com/Hans774882968/mini-webpack npm install npm run bundle 修改index.html依赖的js文件路径bundle_ts.js复制到dist文件夹然后点击打开index.html。 依赖 npm i babel/parser npm i babel/traverse npm i -D types/babel__traverse npm i babel/core babel/preset-env npm i -D babel/preset-typescript npm i -D types/babel__core npm i -D eslint typescript-eslint/eslint-plugin typescript-eslint/parser npm i typescript4.7.4 注意点 配置eslint后记得重启一下vscodeIDE提示才会生效。我们的命令在2022-08-27下载了babel/core7.18.13对应的ts版本要指定为typescript4.7.4否则运行代码会报错。 引言 主要是借鉴参考链接1来实现一个mini-webpack但在功能上有所超越 根据入口文件的拓展名决定用ts或js来编译。借鉴参考链接3用“记忆化搜索”解决循环依赖问题。 最大的缺憾是不清楚ts-loader怎么实现因此这里编译ts的做法是直接判定入口文件的扩展名为.ts然后用babel实现。 因为参考链接1写得很清晰了本文仅定位为一个额外补充不会写得很详细。 初始化项目 npm init tsc --init tsconfig.json主要需要设置 compilerOptions: {module: commonjs, }, include: [bundle.ts ] 样就能用tsc命令编译入口文件了。 接下来给package.json加一个命令bundle: tsc node bundle.js以后可以直接npm run bundle模拟打包命令了。 目前除了在nodejs代码里用babel/preset-typescript插件以外不知道怎么快速方便地编译src文件夹下的ts只好先手工修改tsconfig.json的include和compilerOptions.module接着tsc编译最后还原tsconfig.json。 读取单个文件 getModuleInfo函数主要分析文件的依赖和完成代码转换。 我们需要分析文件的import语句把依赖的文件相对路径转换为相对于项目根目录的路径下称“绝对路径”。使用babel相关的库babel/parser、babel/traverse和babel/core完成。代码转换用babel/core的transformFromAst方法完成。我们需要保证生成的js的模块规范是commonjs。对于编译js的情况不需要特别指明而编译ts的情况需要指明插件plugins: [babel/plugin-transform-modules-commonjs]参考链接5。 如何支持typescript的编译 只需要修改babel/parser的parse方法和babel/core的transformFromAst方法的调用方式。 需要用到babel/preset-typescript这个插件。 babel/preset-typescript没有babel/preset-env方便 需要指明filename属性和babel/plugin-transform-modules-commonjs插件。 相关语句 const ast parser.parse(body, {sourceType: module,plugins: getType() ts ? [decorators-legacy, typescript] : [] });babel.transformFromAst(ast, undefined,getType() ts ?{presets: [babel/preset-typescript],filename: file,plugins: [babel/plugin-transform-modules-commonjs]} :{ presets: [babel/preset-env] },(err, result) {if (err) reject(err);resolve(result as babel.BabelFileResult);} ); 遍历依赖图 parseModule函数。因为循环依赖也只不过是形成递归所以依赖图不局限于DAG可以是任意有向图。所以只需要用bfs遍历一下这里更正参考链接1的一处小错误遍历算法不是递归而是bfs。 parseModule函数中的for循环for (const { deps } of a)用到了它会继续遍历新加入的元素的特性不能替换为forEach是js实现bfs的最简方案。parseModule函数中的await Promise.all是循环中使用async/await的解决方案参考链接4。 parseModule函数的输出为depGraph哈希表其一个对象的deps属性应该设计为一个哈希表而非直接设计为数组下文会解释原因。 生成单个文件 getBundle函数把上面生成的depGraph哈希表扔进代码模板里这就是打包结果。 为了在浏览器环境给出一个合法的commonjs的polyfill这里只需要给出require和exports对象我们在代码模板中定义了自己的require函数。对于一个代码文件来说其返回值为这个文件的exports对象其副作用为把整个文件的代码执行了一遍。 ;(function (graph) {var exportsInfo {};function require (file) {if (exportsInfo[file]) return exportsInfo[file];function absRequire (relPath) {return require(graph[file].deps[relPath]);}var exports {};exportsInfo[file] exports;(function (require, exports, code) {eval(code);})(absRequire, exports, graph[file].code);return exports;}require(${entryPath}); })(${depGraph}); 值得注意的是这个require函数实际上是一个递归函数。在eval(code)时可能产生递归。 depGraph哈希表的一个对象的deps属性为什么设计为一个哈希表而非直接设计为数组因为待执行的代码中所有的路径都是相对路径我们需要用graph[file].deps[relPath]这样的方式把它转换为绝对路径。为了完成这个转换我们还需要设计absRequire函数它只不过起到一个拦截器的作用。 如何解决循环依赖 此时我们如果打包一个含有循环依赖的入口文件运行时会栈溢出。以最简单的情况为例a模块的a函数引用b模块的b函数b模块的b函数引用a模块的a函数。 怎么解决呢根据参考链接3我们可以用“记忆化搜索”的思路开一个全局变量var exportsInfo {};。并在exports对象生成以后立即exportsInfo[file] exports;。上文案例中b模块获得的a模块的exports对象的值是空的但因为对象的浅拷贝特性对象地址是正确的在require函数解析a模块完毕后b模块也就能获得a模块的exports对象的正确值了。 相信对acmer来说这个算法很经典没有相关背景的话可以尝试在浏览器打断点帮助理解。 入口 main函数在最开始读取配置模仿webpack.config.js在最后把getBundle生成的单个文件写入文件系统。 参考链接 手写webpack核心原理再也不怕面试官问我webpack原理手写webpack核心原理再也不怕面试官问我webpack原理 - 掘金babel/core官方文档babel/corewebpack如何解决循环依赖webpack如何解决循环依赖 - 知乎循环中使用async/await的解决方案五种在循环中使用 async/await 的方法 - 知乎babel/plugin-transform-modules-commonjs · Babel

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/89301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

漯河市住房和城乡建设局网站html代码怎么写

Mybatis学习笔记10 高级映射及延迟加载_biubiubiu0706的博客-CSDN博客 缓存:cache 缓存的作用:通过减少IO的方式,来提高程序的执行效率 Mybatis的缓存:将select语句的查询结果放到缓存(内存)当中,下一次还是这条select语句的话,直接从缓存中取,不再查数据库.一方面是减少了I…

济宁城乡住房建设网站网站建设可行性实施报告

1 问题 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例…

国内html5网站wordpress替换主页

前言 上文:MyBatis 初识简单操作-CSDN博客 上篇文章我们谈到的Spring中如何使用注解对Mysql进行交互 但是我们发现我们返回出来的数据明显有问题 我们发现后面三个字段的信息明显没有展示出来 下面我们来谈谈解决方案 解决方案 这里的原因本质上是因为mysql中和对象中的字段属性…

可以做分销的淘客网站三亚网站建设报价

先声明一下,这个是用的linux桌面,然后安装了一个wps软件 安装好之后,通过我们自己的浏览器进行操作。。。。。 我只是试了一下,目前发现只能一个人用,里面还有谷歌浏览器,就是一个远程linux桌面 docker …

汽车建设网站开发流程优秀网站建设评选活动海报

概述 目前最常用的第三方认证服务包括:PKI/CA和Kerberos。PKI/CA是基于非对称密钥体系的,Kerberos是基于对称密钥体系的。 数字证书:提供一种发布公钥的简便途径; 数字签名:用来确认信息发送者的身份,保证…

网站建设流程文字稿国内国际时事写实记录50字配图片

前言 本文记录了使用eNSP进行组网,学习、巩固一些之前学的网络基础知识和协议。 一:同网段、网关互通 网络拓扑如下: AR1的配置: interface G0/0/0 ip address 192.168.10.1 24 PC1和PC2的配置(IP地址和网关设置) 最终实现PC1…

外贸网站建设 佛山深圳网站制作工具

本文转载自公众号:中国人工智能开源软件发展联盟,欢迎大家点击文末二维码关注。知识图谱 (Knowledge Graph)是一种基于图的数据结构,由节点(Point)和边(Edge)组成。在知识图谱里,每个节点表示现实世界中存在的“实体”&#xff0c…

外贸网站如何做seoseo好wordpress主题

1.概念 二维码(QR码) 概念: 二维码是一种矩阵式的二维条码,由黑白方块组成,可以存储大量的信息,包括文本、链接、数字等。QR码的编码方式是在矩阵中通过不同的黑白方块组合表示不同的信息。 特点&#xf…

教学方面网站建设智能手机软件开发

作者:Freemanzxp简介:中科大研二在读,目前在微软亚洲研究院实习,主要研究方向是机器学习。原文:https://blog.csdn.net/zpalyq110/article/details/79527653Github:https://github.com/Freemanzxp/GBDT_Sim…

做网站用小公司还是大公司好做新网站都需要准备什么

些工具都是用于管理 Node.js 包和依赖项的 npm (Node Package Manager): npm 是 Node.js 的默认包管理工具,随同 Node.js 安装。主要功能包括安装、发布、管理 JavaScript 包和依赖项。npm 是最常用的包管理工具之一,拥有庞大的包仓库(npm Re…

莱州网站制作电子商务网站的类型

文章目录一、maven操作二、运行SpringBoot项目三、Spring Boot 热部署一、maven操作 说明执行命令删除.lastUpdated结尾的文件for /r %i in (*.lastUpdated) do del %imaven打包跳过测试mvn clean install -DskipTests 二、运行SpringBoot项目 说明执行命令直接运行jarnohup …

移动网站如何优化排名页面设计风格的主要内容

(选择一项) 3A: B: C: D: 正确答案是 B解析:LinkedList是实现List,Collection接口,是链表方式进行构建的,根据开发要求不同,可以使用LinkedList实现栈(先进先出)和堆(先进后出)这样的数据结构。(选择一项) 4A: B: C: D: 正确答案是 C解析:由于Hashtable是线程…

买极速赛车网站会动手做不汉川网站建设

旁路 旁路电容是为本地器件提供能量的储能器件,它能使稳压器的输出均匀化,降低负载需求。就像小型可充电电池一样,旁路电容能够被充电,并向器件进行放电。为尽量减少阻抗,旁路电容要尽量靠近负载器件的供电电源管脚和…

成都wap网站建设百度小程序审核

一、关于准考信下载 为确保您顺利进入考场参加xxx月份考试,请及时登录本网站个人系统下载并打印准考信,准考信下载时间为xxx-xxx。如通过以上方式无法查找准考信,请您及时拨打所在考点老师联系电话,如有特殊问题,请发…

英文网站建设多少钱建筑设计人才招聘

题目描述 给定a0,a1,以及anpa(n-1) qa(n-2)中的p,q。这里n > 2。 求第k个数对10000的模。 输入描述: 输入包括5个整数&#xff1a;a0、a1、p、q、k。 输出描述: 第k个数a(k)对10000的模。 分析 循环求出ak即可 #include <iostream>using namespace std;int main(){in…

网站制作的基础虚拟主机怎么用

2019 年8 月7 日&#xff0c;旧金山讯——AMD 公司今日召开发布会&#xff0c;在空前壮大的数据中心产业链合作伙伴和客户的见证下&#xff0c;正式发布了第二代 AMD EPYC&#xff08;霄龙&#xff09;系列处理器&#xff0c;为众多企业级、云和高性能计算(HPC)工作负载带来领先…

备案的时候需要网站吗琪歌 wordpress

重庆网络广播电视台记者 余韬2019中国国际智能产业博览会上&#xff0c;各具特色的智能制造装备和机器人纷纷亮相。其中一款能和人下象棋的机器人吸引了大批观众的目光&#xff0c;大家都抢着要跟机器人“一决高下”。“机械手上有视觉辨识系统&#xff0c;识别出放象棋的位置之…

如何做好电子商务网站开发手机版网站怎样做推广

导语&#xff1a;读万卷书不如行万里路&#xff0c;行万里路不如名师点悟。选导师也是个大学问——择师而师&#xff0c;不可草草。为此我们特邀请众多精英导师&#xff0c;我们期待他们的亲身经历和观点建议&#xff0c;能够给考研路上的你以参考……华北电力大学计算机科学与…

当当网的网站建设目标是巫山集团网站建设

背景&#xff1a; 前端系列会收集碎片化的前端知识点&#xff0c;作为自己工作和学习时的字典&#xff0c;欢迎读者收藏和使用。 笔者是后端开发&#x1f636;前端涉猎不深&#xff0c;因此文章重在广度和实用&#xff0c;对原理和性能不会过多深究。 1.html 1.1 html5网页结…

网站域名跳转图盛网站建设

一、安装 双击安装文件&#xff0c;然后安装指引点击下一步 ​​ 选择【Custom】安装类型 ​​ 将程序安装到D盘MongoDB目录下&#xff08;如果切换了目录&#xff0c;记得对应调整monggo.bat下面的路径&#xff09; ​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​ ​​…