zoukankan      html  css  js  c++  java
  • nodejs深入浅出读书笔记(二)

    nodejs的模块化

    1.CommonJS 规范
    -- CommonJS为JavaScrip定了一个美好的愿景,就是希望它可以在任何地方使用
    a.没有模块系统
    b.标准库较少。
    c.没有标准接口
    d.缺乏包管理器

    2.CommonJS模块规范
    a.模块的引用
    var math = require('math') console.log(math.xxxx)
    b.模块定义
    export.add = function(){
    ...
    }

    3.nodeJs模块规范
    a.Node依次查找.js、.json、.node的文件
    b.本地安装包的方式只需为npm指明package.json文件所在的位置
    4.npm钩子
    package.json中的scripts命令就是让包在安装或者卸载过程中提供钩子机制
    5.npm包的发布
    1.npm login || npm adduser 然后按提示操作
    2.进入到要上传的文件夹,在package同级目录下面执行npm publish .
    注意:npm发的邮件有可能被qq邮箱视为垃圾邮件
    6. npm包的安装
    npm install xxxx
    7. 多人发布包,增加,删除,列出
    npm owner ls
    npm owner add
    npm owner rm
    8.分析包
    npm list
    9.npm包平台的问题
    a.上传者的水平不一,所以质量性能方面有待验证
    b.包能在服务器端运行,需要考虑安全问题
    10.鉴于网络的原因,commonjs为服务器端js指定的规范并不适用于前端
    这样就产生了AMD规范,Asynchronous Module Definition 即
    异步定义模块,是commondjs的一个延伸
    amd规范定义模块的方式
    define(function() { var exports = {}; exports.sayHello = function() { alert('Hello from module: ' + module.id); }; return exports; });
    11.cmd规范主要由国内的玉伯提出,与amd规范的区别主要在于定义模块和引入依赖的部分。
    amd需要在声明时候指定所有的依赖,通过形参传入依赖到模块内容中
    define(['dep1', 'dep2'], function (dep1, dep2) { return function () {}; });
    cmd 规范更接近commonjs规范的定义,cmd支持动态引入依赖
    define(factory); define(function(require, exports, module) { // The module code goes here });
    12.兼容多种模块规范
    ;(function (name, definition) { // 检测下文环境是否为AMD或CMD var hasDefine = typeof define === 'function', // 检查下文环境是否为Node hasExports = typeof module !== 'undefined' && module.exports; if (hasDefine) { // AMD环境或CMD环境 define(definition); } else if (hasExports) { // 定义为೵通Node模块 module.exports = definition(); } else { // 将模块的执行结果挂在window变量中,在浏览器中this指向window this[name] = definition(); } })('hello', function () { var hello = function () {}; return hello; });

  • 相关阅读:
    Java基础之IO框架
    Java基础之RTTI 运行时类型识别
    Java进阶之多线程
    Java进阶之内存管理与垃圾回收
    Java进阶之网络编程
    springcloud的Hystrix turbine断路器聚合监控实现(基于springboot2.02版本)
    springmvc,controller层在接收浏览器url传来的参数带中文乱码问题。
    Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:mav问题
    springboot2.x自定义拦截把static静态文件给拦截的坑
    Eclipse启动发生的错误:An internal error occurred during: "Initializing Java Tooling".
  • 原文地址:https://www.cnblogs.com/Nelsen8/p/12751283.html
Copyright © 2011-2022 走看看