zoukankan      html  css  js  c++  java
  • 模块与包管理工具

    @模块与包管理工具
    js的天生缺陷——缺少模块化管理机制
    ·表现>> JS中容易出现变量被覆盖,方法被替代的情况(既被污染)。特别是存在依赖关系时,容易出现错误。
    这是因为JS缺少模块管理机制,来隔离实现各种不同功能的JS判断,避免它们相互污染。 ·解决>> 经常采用命名空间的方式,把变量和函数限制在某个特定的作用域内,人肉约定一套命名规范来限制代码,
    保证代码安全运行。jQuery中有许多变量和方法,但是无法直接访问,必须通过jQuery,$调用 各个方法。 【Commonjs规范】 不同于jQuery,Commonjs是一套规范,约定了js如何组织,如何编写,包括包,二进制,套接字,单元测试等等。
    大部分标准在拟定和讨论之中,首先把执行不同任务的代码块和代码文件看为独立的模块,每一个模块都是一个单独的作用域,
    但不是孤立的,可能存在依赖关系。每个模块分为三个部分,定义、标识和引用。这套规范与现实产品如node.js相互影响,良性循环。 【NodeJs的模块管理机制】 基于commonjs实现了模块管理系统。node中每一个js文件都是一个独立的模块,在其内部不需要有命名空间,
    不需要担心变量的污染和方法定义时的隔离。同时模块之间可以组合形成更强大的模块或功能包。npm即是用来管理各种功能包的
    AMD
    只需引用最后一个.js,其中引用自己的引用就好了
    define (['./依赖的.js'],function(){
    return 输出;
    })

    Node.js中
    @模块的分类 模块类型分为三类: =>核心模块 =>文件模块 =>第三方模块 在nodejs中文件和模块是一一对应的 引用模块的方式 1用文件路径引用 2用模块名来引用 如果用名称引用非核心模块的话 node就会把模块名映射到对应模块名的路径 包含了核心函数的模块会在node启动时预先加载 非核心模块就是使用npm安装的第三方模块 或者其他人创建的模块

    exports 就是require获取的对象
    模块的流程:
    创建模块、导出模块、加载模块、使用模块;
    module.exports和export区别:
    module.exports = add;特别的对象类型;(推荐使用,支持现有)
    exports.add = add;传统的模块实例;(exports是辅助方法)
    module.exports最终返回给调用者;
    exports挂载属性和方法,然后把属性赋给module.exports;


    ndoejs主要就是把项目变成模块化在管理 第一步先创建模块 然后导出模块 然后在加载模块 最后在使用模块

    创建模块也是入口的js文件 里面有特定的功能 导出模块就是把功能和模块名建立关系 加载模块就是在其它文件里引入并且加载这模块
    在ndoe里使用reqiure来完成这个工作 也就是用模块名来引用模块 然后会把模块影射到对应的模块路径 最后就是使用模块 直接调用模块中设定好的方法 
    exports对象用来将属性方法公开 可以让其它模块调用 require可以导入exports公开的方法 这样就算是导入一个模块的 并且是独立的 无需担心其它的错误

    module.exports是支持存在的东西 是特写的对象类型 exports是module.exports的幅度方法 module.exports是给调用着 exports上挂着属性和方法
    最后再把属性方法给module.exports 如果module.exports已经有熟悉方法的话 exports就会被忽略


    AMD用于需要异步加载js的情况
    commonjs是同步加载js用于有构建工具时
  • 相关阅读:
    Git 码云操作
    多线程基础必要知识点!看了学习多线程事半功倍(转)
    Spring技术内幕:设计理念和整体架构概述(转)
    单例模式你会几种写法?(转)
    Linux-看完这篇Linux基本的操作就会了(转)
    每天一个linux命令9之crontab 定时任务
    在linux下给grep命令添加颜色
    springmvc使用StringHttpMessageConverter需要配置编码
    MySQL 中的 base64 函数
    spirng整合rmi
  • 原文地址:https://www.cnblogs.com/sunmarvell/p/7486164.html
Copyright © 2011-2022 走看看