node.js npm 操作 模块化开发 cnpm镜像安装

  模块(包)

  传统引入 js 的缺点

    整个网页,我们写了一个 js 文件,所有的特效都在里面

    耦合度太高,代码之间关联性太强,不便于后期维护

    变量容易 全局污染

  如果将 复杂的 js 文件,拆成多个功能的 js 文件

    缺点:

      发生的请求过多,依赖模糊,难于维护

  这是传统的开发模式,都被抛弃掉了

  所以我们使用 模块化的开发模式

  为什么使用模块化

    减少代码之间的关联度

    部署方便

    更好的进行分离,按需加载,避免了命名冲突,容易维护

  什么是模块化

     node 自带的规范(模块) commonjs 规范

  node -v 检测 mode 版本

  node 是 JavaScript 的环境,在 node 里面可以运行 js 文件,干服务器  指令: node 文件名

  commonjs 模块,是 node 的规范运行,在服务端,不是浏览器端,如果使用在浏览器端,需要使用对该文件进行打包编译(借鉴工具 browserify  webpack  gulp 等)

  暴露的本质是对象

  每个 js 文件,都必须对外暴露接口

  书写模块的时候,对外暴露接口,modele.exports={} 或 exports.xxx= 

  引入模块 require()  参数:路径  路径注意 :如果是当前文件,前面必须加 ./  。如果只写了文件名,则是在node_modules文件下

  commonjs 暴露的本质是一个角 exports 的对象

  module.exports={} 和 exports.xxx= 的区别?

    二者暴露本质是一样的,都是暴露一个 exports 对象  前者会将原有的 exports 的内存地址覆盖,后者会在原有的 exports 的基础上进行添加

  commonjs 是同步加载,是 node 的规范,同步加载在浏览器是一个大坑,只要一个环节卡住了,后面的就没法执行,所以不建议使用,如果非要使用,要需要编辑打包

  对于 web 端,每个 js 都是一模块,每个模块都必须暴露一个接口,每个 js 文件,有一个全局 require() 方法,用来引入模块

  模块:

    1.node 自带的包(模块), path  url  fs

    2.第三方模块 weui / jquery / axios / zepto

    3.自定义模块:我们写的    

  配置模块说明文件,npm iinit 就会生成一个包 package.json 的文件

  version:版本号

  desciption:说明

  main:index.js 文件  我们主文件 index.js 文件,剩下的都是子模块

  在浏览器说 require :is not defined

  说明浏览器不支持 commonjs,需要借鉴打包工具

    1.browserify 

  npm(全称为:node package manager)翻译过来为 node 模块包管理工具

  node 自带的集成环境

  对 npm 包管理工具的增删查改

  下载:

    npm install -g jquery --save(生产环境)    -g(代表全局下载,否则代表当前目录)

  删除:

    npm uninstall jquery

  查找:

    npm search jquery

  修改:

    npm update jquery  

  对于我们开发者来说,只需要一个下载就可以了,删除的话,我们可以直接删除文件

  www.npmjs.com  包管理工具的官方网站

  下载的存放位置

    全局下载,在任何一个文件下都能使用这个包,(在计算机的任何位置使用)

    局部下载,智能在当前目录下使用

  但是 npm 是国外的网站,所以下载会很慢,我们可以安装淘宝 npm 镜像  (称为:cnpm )

  配置:npm install -g cnpm --registry=https://registry.npm.taobao.org

  案例:

    全局安装:jQuery(不推荐,可能不生效)

    国内  cnpm install -g jquery --save

    国外  npm install -g jquery --save

  终止程序:ctrl+c

  局部安装:npm install jquery --save  就会在目录生成一个 node_modules 的文件夹

  文件下:var $=require("jquery")  

  当前文件要加./  , 没有 ./ 的话,默认在 node_modules 里面找 

  index.js 是这个包的输出文件,即便删除了package.json 只要不改变 index.js 的文件名就没事,一旦改了就报错,是因为包的输出文件是 index.js

  npm install jquery --save (这个是下载运行环境(生产环境)的包) 比如 jQuery swiper

  npm install browserify --save-dev (这个是下载开发环境的包) 比如 npm browserify 上线不依赖他们

  二者的区别?

    前者 --save 是上线时,会被压缩的包,后者时 --save-dev 上线时被抛弃的包

  dependecies:生产环境,依赖的包

  devdependencies:开发环境,依赖的包

  指定版本上线:

    npm install jquery @3.2.1 --save (必填,生产环境)

  删除:npm uninstall jquery (基本上不用,直接删除文件也能达到这样的效果)

  在浏览器 不支持 require() 方法,需要 browserify 工具

  1. npm install -g browserify

  2.编译打包:

    browserify 主文件>编译文件  (名字就可以)  > 两侧不能出现空格,否则就会中文就会出现乱码

  如果我们拥有了 package.json 文件,但是他里面的文件丢失?

    我们可以用     npm i    指令在 npm 上下载回来  只下载 node_modules 的内容

  npm 下载的操作 细节处理(重要 !),package.json 这样的配置应该属于局部(猜测。。。)

  如 jQuery / swiper 这样的代码,缺少他们 网页便运行不了,所以需要生产环境,且需要在局部配置操作,

  像 npm / browserify 这样的代码,上线后便不需要了,所以这个是在开发环境, 所以在全局配置上会好一点,

posted on 2019-06-03 15:27  Web引领者  阅读(264)  评论(0编辑  收藏  举报