docs: charles jar package

This commit is contained in:
杭城小刘
2020-03-01 15:52:28 +08:00
parent dc16be8aa1
commit 4e7a16202f
10 changed files with 77 additions and 6 deletions

View File

@@ -1,3 +1,5 @@
# 前端模块化演进之路
有这样一个场景,客户端运行很久,但是法务部和数据部需要收集用户的一些信息,这些信息收集好之后需要进行相应的数据处理,之后上报到服务端。客户端提供一个纯粹的 JS 执行引擎,不需要 WebView 容器。iOS 端有成熟的 JavaScriptCore、Android 可以使用 V8 引擎。这样一个引擎配套有一个 SDK访问 Native 的基础能力和数据运算能力,可以看成是一个阉割版的 Hybrid SDK 额外增加了一些数据处理能力。
@@ -123,12 +125,14 @@ define(function(require, exports) {
4. 跨环境共享模块: CMD 模块定义规范与 NodeJS 的模块规范非常相近,所以通过 Sea.JS 的 NodeJS 版本,可以方便的实现模块的跨服务器和浏览器共享。
## CommonJS 规范
CommonJS 是服务器端模块的规范。NodeJS 采用了这个规范。CommonJS 加载模块是同步的,所以只有加载完成后才能执行后面的操作。
因为服务器的特点,加载的模块文件一般都存在在本地硬盘,所以加载起来比较快,不用考虑异步的方式。
CommonJS 模块化的饿规范中,每个文件都是一个模块,拥有独立的作用域、变量、以及方法等,对其他模块不可见。 CommonJS 规范规定,每个模块内部, **module** 变量表示当前模块,它是一个对象,它的 **exports** 属性是对外的接口,加载某个模块,其实是加载该模块的 module.exports 属性require 方法用于加载模块。
CommonJS 模块化的规范中,每个文件都是一个模块,拥有独立的作用域、变量、以及方法等,对其他模块不可见。 CommonJS 规范规定,每个模块内部, **module** 变量表示当前模块,它是一个对象,它的 **exports** 属性是对外的接口,加载某个模块,其实是加载该模块的 module.exports 属性require 方法用于加载模块。
```Javascript
@@ -178,7 +182,15 @@ id 是模块的名字,是可选参数。 dependencies 指定了该模块所依
require([module], callback)
```
**AMD 规范允许输出模块兼容 CommonJS 规范,这时 define 方法如下**
require 命令用于导入其他模块提供的功能
return 命令用于规范模块的对外输出
define.amd 属性是一个对象,此属性的存在用来判断是否遵循 AMD 规范。
AMD 规范允许输出模块兼容 CommonJS 规范,这时 define 方法如下
```Javascript
define(['module1', 'module2'], function(module1, module2) {
@@ -201,6 +213,8 @@ define(function(require, exports, module) {
});
```
优点: 适合在浏览器环境中加载模块,可以实现并行加载多个模块
缺点: 提高了开发成本,并不能按需加载,而是提前加载所有的依赖
@@ -299,10 +313,18 @@ UMDUniversal Module Definition是随着大前端的趋势产生希望
}))
```
## ES Modules
它是 Javascript 官方的标准化模块系统,所以会被越来越多的浏览器所支持,可以很方便的在浏览器中使用。同时兼容 Node 环境;模块的导入导出通过 import 和 export 来实现,可以和 Commonjs 混用。
![模块化](https://raw.githubusercontent.com/FantasticLBP/knowledge-kit/master/assets/2020-02-02-JSModule.png)
## 回到正题
Cheerio 如何打包到普通的 JS 执行环境中。