CommonJs和AMD是什么(20170214)

原创
2017/02/14 15:07
阅读数 103

        学习node的同时,才开始接触到模块式开发,自然就会接触到CommonJs和AMD,当时应该也是一知半解的状态,今天打算静下心来学习一下vue.js的时候又再次接触到这两个,是该好好的总结一下,一知半解早晚会忘记,还不如不知道,汗!自己的学习动力绝对来自于比较然后自卑!!!回头看看,好像什么都没有过扎实的知识轮廓呀,好失败呀!!

文章参考http://javascript.ruanyifeng.com/nodejs/module.html阮一峰老师的文章

  1. CommonJs
    CommonJS是一种模块式开发规范,NodeJS是这种规范的实现。
    Javascript是强大的面向对象的语言,它的API都是针对浏览器进行应用和开发的,而CommonJs定义了许多非浏览器的API。两者是不冲突的。
  2. CommonJs 相关规范
    参考http://weizhifeng.net/commonjs-module-1.0-specification.html
    一般一个文件就是一个模块,通过require引用一个模块,模块里面的变量和内容都是私有的,而exports对象上的方法和变量是公有的,通过它把模块中的对象暴露出来;
    CommonJS定义的模块分为:{模块引用(require)} {模块定义(exports)} {模块标识(module)}
    require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,唯一的导出口;module对象就代表模块本身,而每一个模块都会有一个module对象,对象上面会有id,filename等相关属性;
  3. CommonJs服务器端“同步”加载模块
    CommonJs模块的加载需要等待前面的模块加载完成才能加载;因为node是服务器端语言,很多文件一般都已经存在在硬盘中,所以加载起来还是很快的
    //setName.js
    var name = "lily";
    var setName = function(){
        return "my name is "+name 
    }
    module.exports.setName = setName;
    
    
    var getName = require("./setName.js");
    console.log(getName)

     

  4. AMD浏览器端异步加载模块
    基于浏览器的模块式开发就不能在使用CommonJs,这时AMD就应运而生。最常见的就是Require.js;使用define来定义模块
     define(['require'], function (require) {
             //the require in here is a local require.
     });
     
     define(function (require, exports, module) {
             //the require in here is a local require.
     });

    完成

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部