模块化:CommonJS规范

目录

CommonJS规范

模块使用环境区分

核心语法

如何使用

CommonJS:服务器端使用

CommonJS:浏览器端使用


CommonJS规范

模块使用环境区分

        CommonJS规范中,每一个JS文件都可以作为一个模块。模块的引入,主要区分两个环境:

【1】服务器端环境(Node.js):程序运行期间,模块是同步加载的,可能会导致响应时间较长;

【2】浏览器端环境(Browserify):由于CommonJS中存在require语法,浏览器无法识别,因此程序运行期间,模块需要借助Browserify提前做编译打包处理之后才能使用。

核心语法

        CommonJS规范的核心语法如下,

【1】暴露模块:
    module.exports = value;
    exports.xxx = value;
    --->暴露模块的本质是:exports对象
【2】引入模块[自定义模块-指定相对路径|第三方模块-指定包名即可]:
    require(xxx);

如何使用

【1】服务器端环境下(Node.js):可以直接使用这种CommonJS模块。Node.js官网:Node.js 中文网

【2】浏览器端环境下(Browserify):需要借助Browserify提前将CommonJS规范的模块编译打包,转换为浏览器端支持的模块之后,才能引入使用。Browserify官网地址:Browserify

 

CommonJS:服务器端使用

        ①创建项目,项目结构如下,

 

        ②引入browserify,

npm install -g browserify

 

 

        ③安装uniq依赖,作用:去除数组中的重复元素。

npm install uniq

        ④定义子模块module,

 

        ⑤主模块引入子模块module、第三方模块uniq;

//主模块中引入子模块
const module1 = require(`./modules/module1`);
const module2 = require(`./modules/module2`);
const module3 = require(`./modules/module3`);
//引入第三方模块
const uniq = require('uniq');
​
const arr = [1,2,2,3,5,5,6,8,99,99,100];
​
const result = uniq(arr);
​
console.log(result);
​
module1.foo();//导出类型-Object对象
​
module2();//导出类型-function
​
module3.bar();//导出类型-Object对象
 

         ⑥运行主模块:node app.js,

CommonJS:浏览器端使用

        ①新建项目,整体结构如下,app.js、modulex.js子模块内容和前面的保持一致。

        ②安装Browserify第三方库,用于实现CommonJS的预先编译打包处理,使其可以在浏览器端环境中使用,

# 全局安装
npm install -g browserify  
# 局部安装 -dev表示开发环境依赖,只在开发环境下使用,用于编译打包;默认不带-dev,表示是生产环境依赖
npm install browserify --save-dev  

        ③编译打包CommonJS模块,原因是:直接在index.html引入app.js,在浏览器环境下运行,是无法识别require语法的,直接报错。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <script src="js/src/app.js"></script>
</head>
<body>
</body>
</html>

 

        前面我们已经安装过browserify.js第三方库了,编译打包的命令如下,-o表示指定输出路径,

browserify js/src/app.js -o js/dist/bundle.js

 

        让我们来查看一下打包之后的bundle.js文件的内容,大致是将CommonJS规范的脚本转换为了浏览器端可以解析的JS脚本。

 

        ④在index.html中引入编译打包之后的bundle.js文件,再次运行,即可正常解析。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index</title>
    <script src="js/dist/bundle.js"></script>
</head>
<body>
​
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是席木木啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值