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

学习当然离不开 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(会报错)

待更新。。。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,295评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,928评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,682评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,209评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,237评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,965评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,586评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,487评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,016评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,136评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,271评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,948评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,619评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,139评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,252评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,598评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,267评论 2 358

推荐阅读更多精彩内容