复习 Javascript模块化

CommonJS: 模块加载是同步
 暴露模块  => module.exports = value
           => exports.xxx = value
 暴露的本质都是exports这个对象

 引入模块 require(xxx)
            => 第三方模块: xxx为模块名
            => 自定义模块: xxx为模块文件路径
实现: 服务器端实现 => node.js
       浏览器端实现 => browserify(也称为commonJS的浏览器端的打包工具)把require语句转换成浏览器认识的语句


AMD:专门用于浏览器端,模块加载是异步的
    定义暴露模块:define(function(){ return 模块 })   //定义没有依赖的模块
                  define(['module1','module2'],function(m1,m2){ return 模块 })   //定义有依赖的模块
    引入使用模块:requirejs(['module1','module2'],function(m1,m2){ 使用m1/m2 })
    main.js用到的是:requirejs(['module1','module2'],function(m1,m2){ 使用m1/m2 })
        模块名需要提前配置:require.config({
            baseUrl: 'js/',
            paths: {
                    module1 : './modules/dataService',     // 配置模块名module1
            }
        })
    最终页面引入时:<script data-main="js/main.js" src="js/libs/require.js"></script>


ES6模块规范:依赖模块需要编译打包处理 babel把es6转换成es5,再由browserify打包编译
            npm install babel-cli(命令行接口) browserify -g
            npm install babel-preset-es2015 --save-dev
            定义.babelrc文件 {"presets":["es2015"]} 转换es6
            导出模块: export
               常规暴露(分别暴露,同一暴露): export function () {};  //可以写多次
               默认暴露: export default value  //暴露什么数据就接受什么数据,只能写一次
            引入模块: import
               常规引入:import {xxx} from '路径';
               默认引入:import module from '路径';
               引入第三方:import $ from 'jquery';

参考:  http://www.ruanyifeng.com/blog/2012/11/require_js.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值