node.js基础知识
程序员文章站
2022-04-15 20:01:02
【1】Node.js严格来说不是一个框架,而是一个平台。Node.js的技术栈:(1)Node.js的核心模块。(2)需要学习的框架:Express、KOA框架...等。(3)模板引擎:是一种编译型HTML语言,例如:Pug、(Jade)、EJS 等。(4)编译型CSS: Lass / Sass / Stylus 等。(5)数据库:mongoDB、MySQL。一、MVC架构1、M:模型(model),模型和数据库有关。2、V:视图(View),视图和页面(模板引擎)有关,...
【1】
Node.js严格来说不是一个框架,而是一个平台。
Node.js的技术栈:
(1)Node.js的核心模块。
(2)需要学习的框架:Express、KOA框架...等。
(3)模板引擎:是一种编译型HTML语言,例如:Pug、(Jade)、EJS 等。
(4)编译型CSS: Lass / Sass / Stylus 等。
(5)数据库:mongoDB、MySQL。
一、MVC架构
1、M:模型(model),模型和数据库有关。
2、V:视图(View),视图和页面(模板引擎)有关,用户最终能看到的就是视图。
3、C:控制器(Controller),用来对数据进行加工的操作的对象,以保证在视图上显示的是用户有效的数据和数据格式。
二、Node.js让JavaScript文件可以单独运行
1.JavaScript文件是脚本文件,不能脱离主语言(HTML)而单独运行,必须在浏览器的辅助下执行。
2、Node.js让JavaScript文件可以独立执行:
在js文件所在的目录下,通过node命令执行js文件。
cmd下运行:
// .js可以省略
3.在Node.js下,JavaScript文件中不能使用DOM操作,因为Node.js中没有window对象。
三、认识模块(Module)
1、Node.js全面兼容CommonJS的模块规范,Vue.js全面兼容Node.js中没有window对象。
2、模块:一个独立的js文件就是i一个模块。
3、Node.js中模块有三种:
(1)核心模块:随着Node.js的安装自动装在本地的模块。
(2)文件模块:用户自己书写的js文件就是文件模块。
(3)第三方模块,由第三方提供的模块。
4、CommonJS规定了模块的导入导出的方法:
(1)传统的js文件之间是可以互相访问变量和函数的,传统的js文件是没有 "块级作用域"的。
(2)Node.js将js文件看成模块,模块之间不能相互访问变量和函数的,模块之间是具备 “块级作用域”的。
(3)模块的导入(引入):
A.格式1:require(“模块名”);
B.格式2:var 变量 = require(“模块名”);
(4)模块的导出(暴露):
A.格式1:exports.变量名 = 数据;
B.格式2:module.exports.变量名 = 对象/类;
例1: 执行另一个模块中的功能。
b.js模块
console.log(‘我是B模块’);
frist.js模块
require(‘./b’);
console.loh(‘我是主模块’);
执行node frist(.js可省略)
结果:
A.需要执行另一个模块的功能时,另一个模块不需要暴露。
B.当执行require()方法时,成功引入模块同时执行了引入的模块。
C.当需要执行另一个模块时,引入另一个模块采用格式1.
例2 使用另一个模块的变量和函数。
b.js 模块:
var x=5; //b模块的变量x
function fact(n){ //b模块的函数fact
var result=1;
for(var i=2;i<=n;i++){
result*=i;
}
return result;
}
exports.para=x;
exports.fun=fact;
frist.js模块:
var b = require('./b'); //b变量接收了导入的b模块所暴露的内容
var x = b.fun(b.para);
console.log(x)
**结论:**当使用另一个模块的变量和函数时,暴露使用格式1,引入使用格式2。
例3: 使用另一个模块中的对象。
b.js模块:
function Ball(x,y,radius){
this.x=x;
this.y=y;
this.radius=radius;
}
Ball.prototype.setRadius=function(newRadius){
this.radius=newRadius;
}
Ball.prototype.getRadius=function(){
return this.radius;
}
module.exports.Xball=Ball;
frist.j模块:
var temp=require("./b");
var ball=new temp.Xball(10,20,5);
console.log(ball.getRadius()); //5
ball.setRadius(15);
console.log(ball.getRadius());
结论: 要是另一个模块中的对象,暴露使用格式2 ,引入使用格式2。
本文地址:https://blog.csdn.net/weixin_45459904/article/details/107508639