美文网首页前端
Node.js使用大全

Node.js使用大全

作者: 光明程辉 | 来源:发表于2018-08-22 00:55 被阅读117次

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

    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明显;
    

    学习当然离不开 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使用大全

        本文链接:https://www.haomeiwen.com/subject/upisiftx.html