JS模块化方案(3)之CommonJS

本文深入探讨了NodeJS中的模块化概念,详细介绍了CommonJS规范下模块的定义、依赖及使用方式,包括不同类型的模块导出和引入方法,并通过具体案例展示了如何在实际项目中应用模块化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、基本介绍

服务端的javascript平台Node的模块化方案。一个文件一个模块。
详细介绍:NodeJS——模块化commonjs

二、基础语法:

1、模块定义


   function common(){
      return "common";
   }

   // 对外提供接口
   module.exports = common;


  对象:(两种)
① exports.A=a;
  exports.B=b;
②
 module.exports=  {A:A,B:B,C:C}

函数:(只有一种)
 module.exports=  {
  CMCFMenuBtn:CMCFMenuBtn,
  changeFocus:changeFocus,
  drag:drag,
  swiper:swiper
 } 

2、如何依赖模块

语法:模块对象 = require引入模块依赖

//require函数的返回值:define中的module.exports
var common =  require('./common/common.js');

3、页面中加载模块

  • 打包js文件
  • 在界面中引用

3.1、Browserify打包JS文件

browserify 入口文件 -o 目标文件

browserify ./index.js -o ./dist/main.js

<script src="./dist/main.js"></script>

3.2、webpack 打包JS文件

webpack  ./index.js  ./dist/index.js

<script src="./dist/index.js"></script>

三、案例:

index.html

<script src="./dist/index.js"></script>

common.js

function common(){
    return "common";
}
module.exports = common;

damu.js

function A(){
    //require函数的返回值:define中的module.exports
    var common =  require('./common/common.js');
    console.log("A from damu&"+ common());
}

function B(){
    var common =  require('./common/common.js');
    console.log("B from damu&"+ common());
}

function C(){
    var common =  require('./common/common.js');
    console.log("C from damu&"+ common());
}

exports.A =A;
exports.B =B;
exports.C =C


hsp.js

function A(){
    //require函数的返回值:define中的module.exports
    var common =  require('./common/common.js');
    console.log("A from hsp&"+ common());
}

function B(){
    var common =  require('./common/common.js');
    console.log("B from hsp&"+ common());
}

function C(){
    var common =  require('./common/common.js');
    console.log("C from hsp&"+ common());
}

module.exports = {
    A:A,
    B:B,
    C:C
}

tg.js

function A(){
    //require函数的返回值:define中的module.exports
    var common =  require('./common/common.js');
    console.log("A from tg&"+ common());
}

function B(){
    var common =  require('./common/common.js');
    console.log("B from tg&"+ common());
}

function C(){
    var common =  require('./common/common.js');
    console.log("C from tg&"+ common());
}

module.exports = {
    A:A,
    B:B,
    C:C
}

入口index.js

window.onload=function(){
    var damu = require("./damu.js");
    var hsp = require("./hsp.js");
    var tg = require("./tg.js");

    damu.C();
    hsp.C();
    tg.C();
}

打包后的index.js,界面直接使用的文件

(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
function common(){
    return "common";
}
module.exports = common;

},{}],2:[function(require,module,exports){
function A(){
    //require函数的返回值:define中的module.exports
    var common =  require('./common/common.js');
    console.log("A from damu&"+ common());
}

function B(){
    var common =  require('./common/common.js');
    console.log("B from damu&"+ common());
}

function C(){
    var common =  require('./common/common.js');
    console.log("C from damu&"+ common());
}

exports.A =A;
exports.B =B;
exports.C =C



},{"./common/common.js":1}],3:[function(require,module,exports){
function A(){
    //require函数的返回值:define中的module.exports
    var common =  require('./common/common.js');
    console.log("A from hsp&"+ common());
}

function B(){
    var common =  require('./common/common.js');
    console.log("B from hsp&"+ common());
}

function C(){
    var common =  require('./common/common.js');
    console.log("C from hsp&"+ common());
}

module.exports = {
    A:A,
    B:B,
    C:C
}


},{"./common/common.js":1}],4:[function(require,module,exports){
window.onload=function(){
    var damu = require("./damu.js");
    var hsp = require("./hsp.js");
    var tg = require("./tg.js");

    damu.C();
    hsp.C();
    tg.C();
}

},{"./damu.js":2,"./hsp.js":3,"./tg.js":5}],5:[function(require,module,exports){
function A(){
    //require函数的返回值:define中的module.exports
    var common =  require('./common/common.js');
    console.log("A from tg&"+ common());
}

function B(){
    var common =  require('./common/common.js');
    console.log("B from tg&"+ common());
}

function C(){
    var common =  require('./common/common.js');
    console.log("C from tg&"+ common());
}

module.exports = {
    A:A,
    B:B,
    C:C
}


},{"./common/common.js":1}]},{},[4]);

四、使用细节和注意事项

1、路径问题
在CommonJS./ :代表当前路径。

2、使用bat文件时打包文件时,文件名不能为browserify

browserify ./tai.js  -o ./dist/tai.js

否则与命令browserify 重复,执行错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值