• 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
    odejs
    ode_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你的电脑名称AppDataRoaming
    pm
    ode_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中的代码
            其它不懂的看文档
  • 相关阅读:
    安卓内存不足(删除data/dalvik-cache目录)
    Blend Tree Type
    Unity 物理引擎动力学关节
    Daikon Forge GUI 制作图集和字体集
    Daikon Forge GUI 制作UI面板
    Vector3.Dot 判断方位
    (译)关于使用Eclipse Memory Analyzer的10点小技巧
    Android中Handler引起的内存泄露
    关于Android内存优化你应该知道的一切
    Android性能优化第(三)篇---MAT比Menmery Monitor更强大
  • 原文地址:https://www.cnblogs.com/mileSs/p/8819642.html
Copyright © 2020-2023  润新知