You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// 开始测试define('a',[],function(){return'a'})define('b',[],function(){return'b'})define('c',['a'],function(a){returna.concat('c')})require(['a','b','c'],function(a,b,c){console.log(a,b,c);// a b ac})
简单实现commonjs规范
a.js
b.js
简单实现AMD规范
开始测试:
webpack打包后的核心代码
实现我们自己的wepack打包工具
mypack
,新建bin
文件夹,在bin
下创建mypack.js
,在这个文件实现打包操作npm init
初始化项目,修改package.json
中的bin
为"mypack": "bin/mypack.js"
,运行npm link
将此命令关联到全局环境下mypack.js
中需要加入#! /usr/bin/env node
,告诉当前文件在node环境下运行mypack.js
打包核心代码mypack
命令即可实现最终的打包接下来在
mypack.js
中实现我们自己的webpack。核心思想:
模板如上,采用模板替换的方式,将代码中的
entry、output
替换为我们自己的,再将eval
的内容换为读取的entry
文件内容(模板替换可采用ejs
模块实现),最后将替换后的内容写入output文件中。继续完善:
如果打包文件中存在require()引入其他模块的情况,需要进行相关处理,首先我们采用webpack打包看一下原始打包结果,以下是基本骨架:
可见,在传入的参数中,不仅传入了入口文件
entry
,还传入了引入的其他模块。因此我们继续修改mypack.js
,让其支持模块引入:再次打包,发现文件通过require引入其他模块成功!
接下来,再来支持
require('./index.css')
引入css样式文件,我们继续修改mypack.js
,如果require文件是css文件,则对其内容进行处理:再次打包,发现可以成功引入css文件了!
The text was updated successfully, but these errors were encountered: