2. Node Fundamentals - Part 1
Module basics
总结:
- Use
require
to load in modules. - Two built-in modules:
fs
andos
. - Two methods:
fs.appendFile
andos.userInfo
. - Template strings,
`Hello ${user.username}!`
Require own files
如何导入我们自己创建的js文件。
在app.js中导入notes.js,如果它们在同一目录:
const notes = require('./notes.js');
在notes.js中添加可以被外部文件访问的property:
module.exports.age = 25;
其实就是往notes.js对象的export属性中添加属性,注意,exports自己也是对象。
如果要往exports里添加名为addNote
的函数:
module.exports.addNote = function () {
...
}
也可以使用arrow functions:
module.exports.addNote = () => {
...
}
在notes.js中定义好了函数addNote
后,可以在app.js中调用:
const notes = require('./notes.js');
notes.addNote(); // 不需要用到addNotes的返回值的情况
var res = notes.addNotes(); //需要用到返回值的情况
Third-party modules
How to require a package I've installed from npm?
安装第三方module,并且在我们的app中require第三方module。
安装步骤
- 在项目的根目录运行
npm init
命令,这一命令将会在项目的根目录创建一个名为package.json
的配置文件。 - 这个文件就是我们用来定义哪些第三方module是我们需要安装的,在我们的application中。
- 我们可以在https://www.npmjs.com中找到各种第三方package。
- 以安装lodash这个module为例,前往命令行,运行命令
npm install lodash --save
这里的--save
是一个flag,它会使package.json
的内容更新。
- 运行命令之后,可以发现项目的根目录中多出了一个名为
node_modules
的目录,其中存放了刚刚安装好的lodash模块;打开json配置文件,可以发现"dependencies"
对应的对象中出现了一组新的键值对"lodash": "^4.17.10"
。 - 现在我们就可以在app.js中调用lodash的内容了。
const _ = require("lodash") // lodash一般用下划线,require的参数使用package.json中dependencies中的包的名字
node在寻找lodash包的时候,会先去看有没有一个叫lodash的core module,发现没有之后它再去node_modules文件夹中找。
使用lodash包
一般在使用npm module之前先去看看文档。
_.isString(value)
Checks if value
is classified as a String primitive or object.
_.uniq(array)
代码:
var filteredArray = _.uniq(['Gary', 1, 'Gary', 1, 2, 2, 3]);
console.log(filteredArray);
输出:
[ 'Gary', 1, 2, 3 ]
发现array中的重复项被消除了。
关于node_modules文件夹的一点说明
当我们把自己的项目拷贝给别人,或者上传到GitHub时,不应该将node_modules文件夹一并复制或上传。
我们的package.json文件中已经定义了第三方包以及它们的版本,我们把除了node_modules文件夹以外的项目内容拷贝给别人之后,它们只需要在命令行中运行npm install
就可以下载安装所有项目依赖的第三方包。
Global modules
nodemon
nodemon是一个第三方包,它可以监视我们的app的代码的变化,每次代码发生变化,它会帮我们自动重启app,免去我们手动重启的麻烦。
不同于lodash,nodemon是一个命令行工具,需要从命令行中运行。安装nodemon:
npm install nodemon -g
不同于安装lodash时使用的--save
falg
网友评论