zoukankan      html  css  js  c++  java
  • 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 这样的代码,上线后便不需要了,所以这个是在开发环境, 所以在全局配置上会好一点,

  • 相关阅读:
    背水一战 Windows 10 (61)
    背水一战 Windows 10 (60)
    背水一战 Windows 10 (59)
    背水一战 Windows 10 (58)
    背水一战 Windows 10 (57)
    背水一战 Windows 10 (56)
    背水一战 Windows 10 (55)
    背水一战 Windows 10 (54)
    背水一战 Windows 10 (53)
    背水一战 Windows 10 (52)
  • 原文地址:https://www.cnblogs.com/shangjun6/p/10967822.html
Copyright © 2011-2022 走看看