nodejs介绍:
为什么浏览器可以运行js代码,因为浏览器有js解析引擎 !
将浏览器引擎单独拿出来,做成一个软件,叫node,目的是使用js写后端
什么是node
一款基于chrome v8 解析引擎运行js代码时的环境
node作用
-当js代码引入到html中,在浏览器中运行的时候,叫做前端js,用来操作DOM和BOW,完成网页特效
-当js代码通过node软件运行的时候,没有DOM和BOM的操作,而是读取电脑硬盘 读写文件 操作数据库等;
-可以当作电脑系统和数据库的时候,就可以当作服务器来使用
ndoe环境中热河执行js代码
1、直接在命令行中书写js代码;
①在命令行中输入node并回车,进入js编辑执行代码;
②编写js代码;
③ctrl+d 退出编辑界面
注意:在命令行中输入的js文件不会保存
2、命令行执行js文件
①在命令行中切换到,需要执行的js文件的目录中
②输入命令:node js文件名 (表示使用node运行js文件)
注意:在js文件中不能有DOM和BOM相关的,因为node没有对DOM和BOM的相关操作
模块化导出语法:
module.exports.xxx = xxx 作用:向module.exports这个默认对象中添加数据
简化语法:const exports = module.exports exports和module.exports指向的是同一个对象\
let num = 66;
let fn = function(){
}
let arr = [1,5,9]
console.log('a.js执行了');
// 将num和fn导出(方式一)
module.exports.num = num;
module.exports.fn = fn;
// 方式二
module.exports = {
num,fn} // 简写
module.exports = {
num:num,fn:fn}
// 表示在导出的内容对象中添加成员num
exports.num = 100
// 直接导出一个内容
module.expots = function(){
}
module.exports = [1,2,8,9]
console.log(module)
/*
Module {
id: '.',
path: 'C:\\Users\\86132\\Desktop', //js文件路径
exports: {}, // 这个js文件向外导出(暴露)的内容
parent: null, // 哪一个文件导入了我
filename: 'C:\\Users\\86132\\Desktop\\66.js', // 这个js文件的绝对路径
loaded: false, // 是否被加载过
children: [], // js文件引入了哪些模块
paths: [ // 当引入第三方文件的时候,会去哪些文件查找
'C:\\Users\\86132\\Desktop\\node_modules',
'C:\\Users\\86132\\node_modules',
'C:\\Users\\node_modules',
'C:\\node_modules'
]
}
*/
模块的导入语法:
语法: const 变量 = require(‘你要导入的js文件’)
变量 获取的是 导入的js文件中的module.expots
// 导入A.js模块
let moduleA = require('./A.js')
// console.log(num); // 报错, num is not defined
// 解释:虽然B引入A.js,但是,两个模块是独立的,B中没有num
console.log('B执行了');
console.log(moduleA);
内置fs模块:
1 文件读取(异步) fs.readFile(文件路径,格式,回调函数)
/*
内置模块:
fs模块(file system):专门用来操作文件的方法
导入fs模块: let fs = require('fs')
*/
/*
1 fs.readFile(文件路径,格式,回调函数)
路径:文件路径
格式:选填.默认是buffer,选填'utf-8'
函数:异步读取文件
*/
let fs = require('fs')
console.log('-----start------');
// 1 异步读取文件内容
fs.readFile('./data/data.txt','utf-8',function(err,data){
// 若读取成功,err=null,data是读取的数据
// 若读取失败,err=错误信息,data为空