CommonJS理解以及浏览器的运行

1.NodeJS运行的是CommonJS模块,但是浏览器中不能运行CommonJS,就是我们写的代码使用到了module.export和require来分发JS文件,这种叫做CommonJS模块,因为NodeJS自己定义了四个变量module,exports,require,global,由于浏览器中没有这四个变量所以没法解析(实际上这四个变量的作用是全局变量,module.exports存储我们的JS导出的变量,然后通过require来加载存储再里面的变量)
从而达到文件分发的目的。
CommonJS是同步加载,适用于服务器端的模块加载,因为大家在文件的时间就是等待机器读取的时间,但是浏览器不行,他服务端获取文件还取决于网速的快慢,一旦使用同步等待的过程将处于假死状态,所以出来了AMD规范,异步加载模块。

AMD比较适合浏览器环境。目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js。

browerify 就是这么实现的
,browerify 将所有模块放入一个数组,id 属性是模块的编号,source 属性是模块的源码,deps 属性是模块的依赖。

因为 main.js 里面加载了 foo.js,所以 deps 属性就指定 ./foo 对应1号模块。执行的时候,浏览器遇到 require(’./foo’) 语句,就自动执行1号模块的 source 属性,并将执行后的 module.exports 属性值输出。

在理解require.js 参考另一篇文章:https://blog.csdn.net/lengyue1084/article/details/78284518?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-5.no_search_link&spm=1001.2101.3001.4242.5

简单来说就是 下载require.js 这个资源,有个主程序的入口,main.js
使用define定义资源和依赖,使用require来加载资源,NodeJs是相同的原理,只不过是被隐式化了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]: 你提到了关于在浏览器中执行Webpack代码的问题。目前有一些解决方案可以在浏览器中进行Webpack编译,例如codesandbox。Codesandbox是一个基于浏览器的编译策略,可以用于在浏览器中打包React、Vue等应用。它可以被看作是Webpack的浏览器版本。然而,目前还没有直接在浏览器中执行Webpack而不是创建一个新的Webpack的方法。\[1\] 引用\[2\]: 你还提到了关于在浏览器中模拟Node.js运行环境的问题。虽然Node.js和Chrome都使用了V8引擎,并且许多Node.js库的代码可以在Chrome中执行,但是在浏览器中完全模拟Node.js的运行环境是非常困难的。尽管有一些库可以帮助我们构建这样的环境,如BrowserFS、memfs和rollup-plugin-node-builtins,但是关键的Node.js模块在浏览器中是不可用的,需要进行修改。目前,Node.js支持CommonJS(cjs)和ES模块(esm),但是为了简化问题,你目前只开发了cjs模块。\[1\] 总结来说,目前还没有直接在浏览器中执行Webpack而不是创建一个新的Webpack的方法。在浏览器中完全模拟Node.js的运行环境也是非常困难的,因为关键的Node.js模块在浏览器中是不可用的。尽管有一些库可以帮助我们构建类似的环境,但是需要进行修改和适配。\[1\] #### 引用[.reference_title] - *1* *2* [浏览器运行node.js_如何在浏览器运行Node.js [教程]](https://blog.csdn.net/dfsgwe1231/article/details/107264234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值