nodejs是JavaScript运行的环境
动力源自于V8 JavaScript引擎
从node的一步步的升级,加入了es2015的支持,也解决了在串行执行时候,加入了回调函数,事件,异步,避免文件获取干等着,
虽然require导入模块是同步的,但我们一般放在最前面。
加入了非阻塞io,就是在做其他事情的时候可以发送网络请求获取资源,当事情完成回调函数处理结果。
如果你使用async与await和promise就可以感受很深
执行的时候进行事件轮询,单向的先入先出队列,根据定时器与延迟器完成回调,用const与let取代了var,当你使用的数据类型不改变的时候建议用const,随意改变类型用let,let,const与var的区别,var有变量提升具有作用域链,而let是块级作用域无法形成作用域链,const可以形成作用域链,
作用域链,比如你在函数局部作用域内调用某一个变量,先在当前作用域找,然后再到上一级作用域找,所以变量名不能冲突,和原型链很类似。

node自带了npm,依靠模块提供功能
文件系统fs模块
网络模块http
调试器
经常使用nodejs来搭建web应用于后台程序,也通过使用框架来完成mvc的架构。
引入了模块的复用module.exports exports用来避免变量与函数的覆盖
exports最终的指向依旧是module.exports,因为exports这是模块局部的引用
最后的接口还是module.exports来实现。

异步编程技术是非常重要的核心
你在学习前端的时候,有接触过回调函数,事件,定时器,延迟器,微任务promise的resolve与reject then与catch
在使用nodejs不建议回调嵌套太深,分离成函数或者返回值调用,更好维护。
nodejs执行函数存在串行按顺序同步运行 与并行无所谓谁先后运行
所以对流程的控制就显得很重要,async 与await可以使用

使用nodejs搭建服务器 采用express继承web框架,与koa模块按需web框架
使用路由设计restful API,选择数据库,模块化分离封装复用,形成mvc架构
使用反引号可以连接字符串和读取变量,简直不能太好用

这是使用koa-views 而使用express安装ejs 就ok了
router.get('/view', async ( ctx ) => {
let title = 'hello koa2'
await ctx.render('index', {
title//这是index文件与ejs后缀结合的模板 title是模板的变量
})
})

如果你需要视图渲染的话

数据库采用mysql与MongoDB,Redis多一点
都可以学习一下

如果你把nodejs当做后端来做
前端也可以融入webpack 或gulp来使用react或者vue结合组件框架
形成一个综合性的网站,
解决并发与网站访问性能,就需要从网站优化与数据库,与nodejs异步上面下功夫。