博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js笔记一
阅读量:5925 次
发布时间:2019-06-19

本文共 1408 字,大约阅读时间需要 4 分钟。

hot3.png

模块

在Nodejs中,一般将代码合理拆分到不同的js文件中,每一个文件就是一个模块,而文件路径就是模块名。在编写每个模块时,都有require、exports、module三个预先定义好的变量可使用。

require函数用户在当前模块加载和使用别的模块。

    var foo=require("../foo");

exports对象是当前模块的导出对象,用于导出模块共有的方法和属性。模块通过require函数得到的就是当前模块的exports对象。

    exports.hello=function(){console.log('wsh');};

module对象可以访问到当前模块的相关信息,但最多用途是替换当前对象模块的导出对象。

模块初始化

一个模块中的js代码仅哎第一次被使用时执行一次,并在执行过程中初始化模块的导出对象。之后,缓存起来的导出对象被重复利用。

主模块

通过命令行参数传递给NodeJS以启动程序的模块被称为主模块

 

代码组织和部署

为了有个良好的开端,首先需要准备好代码的目录结构和部署方式,就如同修房子要先搭脚手架。

    模块路径和解析规则

    1 内置模块

    如果传递require函数的是nodeJS内置模块,不做路径解析,直接返回内部模块的导出对象。例如require("fs");

       2 node_modules目录

            node_mudule目录用于存放模块。

        3 node_path环境变量

        与path环境变量类似,nodeJS允许通过node_path环境变量来指定额外的模块搜索路径。NODE_PATH环境变量中包含一到多个目录路径,路径之间在Linux下使用:分隔,在Windows下使用;分隔。例如定义了以下NODE_PATH环境变量:

    NODE_PATH=/home/user/lib:/home/lib    

当使用require('foo/bar')的方式加载模块时,则NodeJS依次尝试以下路径。

 /home/user/lib/foo/bar

 /home/lib/foo/bar

 

我们已经知道了JS模块的基本单位是单个JS文件,但复杂些的模块往往由多个子模块组成。为了便于管理和使用,我们可以把由多个子模块组成的大模块称做,并把所有子模块放在同一个目录里。

package.json

如果想自定义入口模块的文件名和存放位置,就需要在包目录下包含一个package.json文件,并在其中指定入口模块的路径。

工程目录

了解了以上知识后,现在我们可以来完整地规划一个工程目录了。以编写一个命令行程序为例,一般我们会同时提供命令行模式和API模式两种使用方式,并且我们会借助三方包来编写代码。除了代码外,一个完整的程序也应该有自己的文档和测试用例。因此,一个标准的工程目录都看起来像下边这样。

- /home/user/workspace/node-echo/   # 工程目录

    - bin/                          # 存放命令行相关代码
        node-echo
    + doc/                          # 存放文档
    - lib/                          # 存放API相关代码
        echo.js
    - node_modules/                 # 存放三方包
        + argv/
    + tests/                        # 存放测试用例
    package.json                    # 元数据文件
    README.md                       # 说明文件

 

 

转载于:https://my.oschina.net/wsh2016/blog/740958

你可能感兴趣的文章
《Python高效开发实战》实战演练——开发Django站点1
查看>>
我的友情链接
查看>>
sqlplus中???乱码问题的解决
查看>>
chrome:无法添加来自此网站的应用
查看>>
我的友情链接
查看>>
awk总结
查看>>
我的友情链接
查看>>
linux 常见服务端口
查看>>
虚拟机安装与概述(4)
查看>>
LogMiner 详解
查看>>
我的友情链接
查看>>
动态语言的灵活性是把双刃剑 -- 以 Python 语言为例
查看>>
启用“QQ在线状态”服务
查看>>
Telnet部署与启动 windows&&linux
查看>>
我的友情链接
查看>>
spark2.x由浅入深深到底系列六之RDD api reduceByKey与foldByKey对比
查看>>
CentOS 下wireless搭建
查看>>
javascript:void(0)
查看>>
spring管理的ehcache缓存没有起做用的原因
查看>>
配置终端服务单一登录
查看>>