Node.js使用大全

先回顾一下我们前端的主要工作:

1、写页面 --- HTML
2、美化页面 ----- CSS
3、调用后台接口API去请求数据或 提交数据 ----- JS
例如:
  前端核心之一技能:Ajax --> XHR、JQuery、$.agax()、$.get、$.post
        其中 JQuery 更多的是操作 DOM 方面的。
4、HTML5 和 CSS3  新语法、新特效
      例如:
            动画、移动web的屏幕适配(媒体查询)
5、Angular  ---- 单页面应用程序
6、Vue  ---- 基于Node
7、微信小程序 --- 官网
8、React Native  --- ios、Android 混合开发
。。。

后端主要工作:

1、主要进行业务逻辑的操作
2、例如: 数据的增加、删除、修改、查询、操作数据库
3、对外暴露API 接口 ---- (API后台的灵魂)

前端(PC、IOS、Android等)和 后端 的协作流程?

同时进行开发:
1、前端写页面,调用后台的接口;(调用API)
2、后台接受前端发送过来的请求,进行业务处理,处理结果返回给前端。(提供API)

1、学习Node首先要学习如何使用 npm 包管理器

区别 NPM、Github、Git
  • npm包管理器 和iOS 的 CocoaPods 很相似,里面托管了各种各样的包,主要是方便管理和维护。
  • Github、码云 代码托管平台(托管了各种各样的代码仓库)
  • Git是用来对代码进行分支版本管理
安装包
  • 第一次使用 先初始化(在当前文件打开终端) npm init -y ,你会看到工程里有个 package.json,将来所有安装的包,都会记录到这个文件中

  • 使用 npm install 包名 --save/--save-dev 去安装包;其中,install 可以简写成 i ;

  • --save 表示把包安装到部署依赖中(在开发和部署上线都需要使用的包)--save可以简写成 -S,
    save-dev 表示安装到开发依赖(只在项目开发阶段需要用到的包)--save-dev可以简写成 -D;

  • npm i 包名 -g ,其中,-g 表示全局安装某些包,通过-g安装的包都在C:\Users\用户名\AppData\Roaming\npm下面

卸载包
  • npm uninstall 包名 --save/--save-dev或者npm remove 包名 --save/--save-dev

yarn

- yarn和npm的作用完全一样,都是用来管理项目中的第三方依赖包的!
- yarn是Facebook公司推出来的一套包管理工具!
【React,尤其是ReactNative,默认就是用Yarn去装包的】
- yarn会缓存曾经安装过的包;但是npm也会缓存,但是效果不如yarn明显;
  • yarn与npm的命令行小结

学习当然离不开 nodejs文档.

Node它是什么?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。

Node可以做什么?

  • node属性中后端。
  • Node可以作为前端的一个工具去使用,通过NPM安装好用的工具;Node可以开发一些前端的工具【i5ting_toc】
  • Node能做服务器
  • Node还可以操作数据库并对外提供数据接口
  • Node能做即时聊天(到时会分享怎么做!!!)

总结:Node.js 就是一个Javascript的服务端运行环境(依赖于Chrome 的V8引擎),为Javascript提供了服务器端编程的能力!

怎么运行第一文件?

  • 直接在命令行中输入 node 空格文件名,回车。

下面是讲解 常用的模块化

模块化

概念:
把一些功能类似的代码,封装到一个单独的文件中去,这些单独抽离出来的代码文件,就能够提供各种各样好用的功能;这种通过代码功能分割文件的方式,叫做程序中的模块化。

  • 个人认为模块化这是它的亮点之一(高性能、异步操作等都是哈!)。
  • Node的模块化好处是:
  • 一个 js 文件就是一个功能模块;保证了每个文件的功能(职能)单一;
  • 需要什么特定的功能,直接调用某一个特定的模块;

怎么模块化?

  • request: Node要求使用内置或第三方的模块时,要引用 request('xxxxx')
  • module: 它就是一个模块。(node里一个js 文件就是一个模块!!!)
  • exports: 在Node的模块中,如果这个模块需要向外暴露一些成员,供其他JS模块使用??? 怎么办??? ----- 使用 exports.暴露的成员

exports 和 module.exports 的区别

  • 通过 module.exports 可以使用 " . " 点 的形式追加属性,也可以使用 " = "等号 直接赋值的形式导出成员;
  • exports 只能通过 " . " 点的形式追加属性;不能 使用 “=”等号 直接赋值的形式!
注意:

在一个 module 中,最终向外暴露的成员,以 module.exports 指向的对象为准!

模块加载规则

  1. 优先从缓存中加载
  2. 加载核心模块:优先从缓存中加载;如果缓存中没有的话,再去执行加载核心模块!
  3. 自己的模块:优先从缓存中加载;如果缓存中没有的话,再去执行加载用户模块!
用户模块的查找规则:
如果不写后缀名,则先严格按照给定的文件名去查找模块并加载执行;
index   ->  index.js  ->   index.json    ->  index.node

模块化

  1. node中的模块化基于commonJS:最显著的特点所有依赖项都是同步加载的!!!
  2. commonJS由于是一个同步加载规范,所以不适合浏览器端使用;于是,浏览器端需要使用异步的模块加载机制
由于 node是具有中后台的能力,所以后台就经常使用到文件操作:(异步的,注意坑!)

解决异步的坑:

1、嵌套 2、创建一个计数器count,然后判断是否加载完毕 3、promise
  // forEach 的使用
  data.forEach((value, index) => {}

1、node常见的文件操作

fs.Stats 对象提供了一个文件的信息。

  1. fs.readFile
  2. fs.writeFile
  3. fs.appendFile
    ...
写出一个类似于 Apache 服务器的服务?(4步)
  var http = require('http')              // 引入 require(‘http’)
  var server = http.createServer()        // 创建 服务
  server.listen('3000', () => {           // 链接 listen      
      console.log('http://127.0.0.1:3000')
  })     
  server.on('request', (req, res) => {     // 请求
    
  }

2、node怎么使用art-template 模板的使用?

art-template官方文档

  • 服务端渲染和客户端渲染的对比
    博客园官网

引入 art-template

  • var template = require('art-template')
    创建服务器(上面步骤)

  • 和之前使用的渲染显示到页面的方式一样:

         //  显示 {list:allArr} 数组要转对象(模板都是对象)
            if (count == data.length) {
               var html = template(__dirname + "/datas/list.html", {list: allArr})
                res.end(html)   // res: response  end(): 表示输出值或渲染
            }
    
注意:nodejs res.end和res.send 区别
简单来说就是   如果服务器端没有数据返回到客户端 那么就可以用 res.end

但是 如果 服务器端有数据返回到客户端 这个时候必须用res.send ,不能用 res.end(会报错)

待更新。。。

你可能感兴趣的:(Node.js使用大全)