node.js学习记录
前言:为了搞好前端与后端数据库的连接,必须来学 n o d e . j s node.js node.js了,太菜了,好好学。
1.模块化开发。
从另一个
.
j
s
.js
.js文件导入使用exports(module.exports)
对象。
//d1.js
const add = (n1,n2) => n1+n2;
var cnt =10;
var name = 'harris';
exports.add = add;
exports.cnt = cnt;
exports.name = name;
//d2.js
const a= require('./d1.js');
console.log(a);
输出结果:
当
e
x
p
o
r
t
s
exports
exports导入的对象不同时,以module.exports
为准。
const add = (n1,n2) => n1+n2;
var cnt =10;
var name = 'harris';
exports.add = add;
exports.cnt = cnt;
exports.name = name;
module.exports = {
name : 'yyyy'
}
2.系统模块
f
s
:
fs:
fs: file system
导入fs对象,然后使用 r e a d F i l e readFile readFile就可以读取文件。
readFile('文件路径','编码方式','callback(回调函数)');
const fs = require('fs');
fs.readFile('./d1.js','utf8',(err,doc)=>{
console.log(err);
console.log(doc);
});
写入文件
const fs = require('fs');
fs.writeFile('./demo.txt','即将写入的内容',err=>{
if(err != null){
console.log(err);
return ;
}
console.log('文件内容写入成功!');
})
path模块:
const path =require('path');//导入path模块
let address = path.join('c','node','d1.js');
console.log(address);
__dirname
获取当前文件所在的目录与path.join
连用,即可通过绝对路径来读取文件。
const fs =require('fs');
const path =require('path');
console.log(__dirname);
console.log(path.join(__dirname,'d1.js'));
fs.readFile(path.join(__dirname,'d1.js'),'utf8',(err,doc)=>{
console.log(err);
console.log(doc);
})
3.第三方模块:
cmd 到指定要下载的目录
然后输入 npm install 模块名 (-g)
即可。
(-g)
global
代表是全局安装,不加则是本地安装,全局安装则在任何项目时都可以使用该模块。
删除模块: npm uninstall 模块名
即可。
nodemon 是可以实时对保存的文件进行显示模块,不用每次保存都要输入cmd命令执行,使用该nodemon 运行程序后,程序会被挂起,若要终止操作,则使用ctrl + c
即可。
4.gulp模块。
0.建立一个gulp-demo
文件夹
1.在上面的文件夹目录下 执行cmd:npm install gulp
2.然后建立两个文件夹src
,dist
即源文件,目标文件,再建立一个gulpfile.js
用于执行任务。
3.将要执行的项目放入src
里,然后可以进行相关的操作。
const gulp = require('gulp'); //引用gulp模块
gulp.task('first',(cb)=>{ //注意要使用回调函数
console.log('第一个gulp任务执行了');
gulp.src('./src/demo.html')
.pipe(gulp.dest('dist/html'));
cb();
});
上面的程序是实现文件的复制。
注意如果遇到:gulp : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\gulp.ps1,因为在此系统上禁止运行脚本等字样。
解决方法:
管理员运行powershell
,输入set-ExecutionPolicy RemoteSigned
输入Y
回车。
遇到:
Did you forget to signal async completion?