node中npm结构详解以及自定义npm包上传到npm教程

1. package.json

作用:
    1.每个Node项目中及第三方包中都必须的
    2.它描述着Node项目或是第三方包的一些信息
    3.透过这些信息可以知道该Node项目或是第三方包运行起来要依赖于哪些第
    三方包
    4.还可以在里面写一些终端执行脚本,在package.json的scripts中进行定义

使用步骤:
    1.打开终端cmd或是powershell
    2.切换到该Node项目的根目录下面去
    3.执行 npm init -y 或是 npm init 生成package.json
    4.在开发过程中安装第三方包的时候这样写 npm install --save 或是 
    npm install --save-dev

注意:
    1.使用 npm init -y 的时候一定要注意,项目名称不能是中文,否则报错
    2.npm init 生成package.json的时候,按照要求一步一步来
    3.如果是开发阶段需要的第三方包,使用 npm install --save-dev
    4.如果是运行阶段需要的第三方包,使用 npm install --save

package.json一些重要属性说明:
    name : 项目或是第三方包的名称,也是其它项目导入时require()中的名称
    description : 这个项目或是第三方包功能的描述
    main : 项目或是第三方包的入口文件
    license : 授权方式,一般写MIT
    keywords : 发布到npmjs中之后,其它开发者搜索我们这个第三方包的关键
    字
    scripts : 以后在终端执行的脚本
    devDependencies : 开发阶段依赖的包
    dependencies : 运行阶段依赖的包
    author : 作者
    version : 版本号

2. npm的介绍

npm是用来管理nodejs第三方包的一个工具,利用它可以
    1.安装 本地包/全局包 
    2.将自己写的包发布到npmjs上面去,供全世界的开发者使用

npm在安装好node之后,就会自动安装到node的安装目录中,一般是安装在node根目录的node_modules的子文件夹下,比如我的npm就安装在 C:\Program Files\nodejs\node_modules

如何测试npm是否安装成功,在终端中输入 npm -v 如果能出现版本号就表示安装成功

3. npm操作之从npmjs.com中安装/下载包

安装包/下载包分两种

    本地安装:用在当前项目中
        命令:npm install 本地包的名称

    全局安装:以后在终端中使用
        命令:npm install -g 全局包的名称

        其它命令:
        1.查看全局包安装路径:npm root -g

        2.更改全部安装包安装路径:npm config set fix "全局包的路径"
            当我们用 `npm install - g 全局包的名称` 这个指令的时候,有的时候全局包可能会安装在 C:\Users\你的电脑名称\AppData\Roaming\npm\node_modules下面,这个时候如果你要更改全局包的安装路径,可以使用

4. 发布自己的框架到npm上面去【了解】

步骤:
    1.先创建一个以包命令的文件夹("注意:该包名必须是npmjs上面没有的,否则后面上传不上去哈")

    2.写好你自己要发布的包里面的代码(书写规范建议)
        2.1 个人建议将那些零散的代码放在一个 lib 文件夹下
        2.2 在包的更目录下建立一个 index.js 入口js文件
        2.3 包名称必须小写,这个是npmjs.com的规定

    3.在包的根目录下设置好 package.json 里面的内容
        创建package.json有两种方式
            方式1:npm init -y (会生成好package.json,并且会在package.json中生成些默认的键值对)

            方式2:npm init (也会生成package.json,但是会提示你生成哪些需要的键值对,一般要生成的键值对有:name、version、main、description、keyword等等)

    4.可以在包的根目录下创建一个README.md写上你这个框架的介绍,以及如何使用

    5.开始上传

        注意事项:在要发布包的文件夹下,执行相关指令(打开面板的执行路径是和package.json在同一级就行)

        步骤:
            5.1 先登录到npmjs网站上面去: npm adduser
                会提示你输入在npmjs网站上面的用户名和密码的,在这个过程中当你输入了正确的用户名和密码之后,还可能提示你的用户名和密码错误,这个时候就需要查看下当前的镜像是否是淘宝

            5.2 登录成功之后,这个时候使用 npm publish 发布到npmjs.com上面去

    6.撤销(可选)
        步骤:
            6.1 先登录

            6.2 撤销 npm unpublish 包名称@版本号

    注意:
        1.登录之前要看下我们的镜像是否是npmjs.com
        2.如果改了源代码,要再发布,得更改下版本号,版本号只能递增

5. require()加载规则

基本概念:
    1.核心模块、自定义模块(自己写的模块)、第三方包都优先从缓存加载
    2.在windows中加载一个自定义模块(自己写的模块)要使用 ./ 或者 ../ 开头

自定义模块(自己写的模块)加载规则:
    一个自定义模块可以不写扩展名, require()会自动依次按照 .js .node .json的顺序进行补齐后加载,如果三个扩展名都没有,则当做核心模块或者包加载,如果核心模块或者包都没有,则报错

    开发建议:自定义模块最好写扩展名,提高查找效率

require加载第三方包的规则:
    依次按照module.paths 数组中的路径,根据传入require的标识符名称进行查找,如果都没有查找到标识符名称的包,则报错

    找到node_modules之后再加载具体第三方包(以xtpl为例)规则:
        1.如果包下有package.json 文件,并且其中的main 属性配置的文件能够找到,则加载此文件
        2.如果package.json文件没有,或者它里面main属性配置的文件名不能找到,则默认加载当前文件夹下的index.js
        3.如果都没有找到则报错            

总结:require()加载node_modules的时候是按照module.paths 数组中的路径一个个查找,直到找到为止

6. HTTP模块处理静态资源

前提:
    以后所有的静态资源(html,css,js,图片)以及NodeJS写的代码都是放在
    服务器端的

如何访问呢?
    当浏览器发送请求,请求某个网页之后,会将这个请求发送到后台服务器
    node.exe,然后根据路由规则交给对应的js去处理,在js里面就去将静态资源
    读取到内存,经过一番处理之后返回给浏览器去展示

    如果返回的网页中,还需要进一步请求,比如网页中要用到某个.css文件,这个
    时候同样会发送网络请求给服务器node.exe,服务器同样还是按照上面的步骤进行处理,先读取到REPL环境中来,然后经过处理之后返回给浏览器

注意点:
    浏览器可能访问的服务器资源是不一样的,比如浏览器可能需要html,可能需
    要css,也可能需要图片,所以服务器返回资源的时候一定要告诉浏览器
    我给你返回的到底是啥,这个时候就一定要在响应头中增加一个键值对
    key就是Content-Type,值则根据你给浏览器返回的是啥,你就写啥

7. http模块实现动态网页

# 不使用模版
    1.去读取模版的内容
    2.利用数据生成新的元素
    3.利用新的元素替换模版中的占位符

    缺点:代码太多
         容易出错


# 使用模版
    成套的模版,既包含前端也包含nodejs

    https://github.com/xtemplate/xtemplate/blob/master/docs/syntax-cn.md 网页使用的

    https://github.com/xtemplate/xtpl NodeJS使用的

    注意:
        这个模版要配合起来使用,除了写html里面的模版,还要写nodejs中的代码
        其它不懂的看文档
posted @ 2018-04-13 12:58  MF孟飞  阅读(485)  评论(0编辑  收藏  举报