为什么我们要学习Node.js?

  1. 认为:

    • Node.js就学习一周,时间比较短,不重要
    • 将来工作我后端又不用Node.js做,我们又java/python/php/c,为什么要在意它
    • Node.js接下来项目中又不用,不用好好学,不用在意
  2. 重要性?

    • Node.js可以说是对js功能的扩展,比如: Node.js可以操作文件,数据库
    • Node.js是webpack的底层语言,如果Node.js不了解,那么我们webpack学不好
    • Node.js是现在vue/React中构建项目的一环,如果学不好,那么会导致Vue/React基础不好
    • Node.js可以充当前后端连接的一个桥梁
    • Node.js也可以当做后端这个角色来看,如果我们想和后端配合的更好,那么我们必须了解后端,Node.js可以说是我们接触后端的一个方式
    • Node.js现在已经成为很多企业的职位要求了
  3. Node.js 是一个基于Chrome V8 引擎的JavaScript运行环境

    • 服务端的js有什么能力?(服务器)
  4. Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效

    • Node.js功能

      • 事件驱动
      • 非阻塞I/O模型【 异步的输入输出,比如: 文件操作、数据库操作 等 】

Node.js文件的运行?

  1. 使用Node.js编译器
  2. 使用命令运行

Node.js文件的实时监听改动

  1. nodemon

Node.js版本

  1. Current [ 最新的版本 ] - 小白鼠
  2. LTS - 长期稳定版本

Node.js的模块化问题

  1. Node.js采用了Common.js模块化
  2. 应用
    • 内置模块 -> 可以直接使用
const fs = require('fs') // Common.js 模块引入方式
/*
* fs 是一个对象
* 定义的fs 其实拿的是一个地址,地址我们希望是稳定不变的,所以const
*/ // fs.readFileSync // 同步读
// fs.readFile // 异步读
  • 第三方模块 -> Node.js没有的 类似于插件
/*
* 类似插件
* 我们现在想在我们的当前文件中引入带有功能的插件
* 前端第三方模块全部都在一个网站中: www.npmjs.com
* 使用
* 1. 安装【 npm/cnpm/yarn 】
* 2. cnpm i request -S/-D
* -S 生产环境
* -D 开发环境
*
* 问题: 这里是否存在跨域?
* 不存在 Node.js是运行在服务端的,不是浏览器端,没有同源策略
*
! 总结
! 第三方模块使用? 将来别人项目中使用了你没有用过的东西,怎么办?
! 1. npm.js 查阅文档
! 2. 先写单案例测试
! 3. 记录使用文档,记录自己博客中 */ const request = require('request') request('https://m.lagou.com/listmore.json', function (error, response, body) {
console.log('error:', error);
console.log('statusCode:', response && response.statusCode);
console.log('body:', body);
});
  • 自定义模块
/*
* 自定义模块
* 自己创建模块,自己使用
* 类型:
* 1. 函数
* 2. 对象
* 3. 字符串
*/ // 1. 定义模块
const people = {
name: '西阁',
sex: 'man',
age: 18
} // 2. 导出模块 module.exports = people
// 3. 自定义模块导入
const people = require('./3-自定义模块定义.js') console.log('people.name:', people.name )
  1. 模块化解决的是什么问题?

    • js中可以引用其他类型文件(html css sass )
  2. 自定义模块上传实现步骤 【 公司中应用比较多 】

      1. 创建文件夹,注意命名不要冲突
      1. 创建package.json文件
      • npm init / npm init -y
      1. 创建了 index.js, 里面封装任意一个功能
      1. 创建一个 npm.js 账号
      • 发送一个邮箱连接激活【 手动点 】
      1. 保证我们当前的源是 npm 源
      • $ nrm use npm
      1. 登录账号
      • $ npm adduser
      1. 上传
      • $ npm publish

JSON.stringify / JSON.parse

  1. 字符串、对象互相转换
  2. 拷贝
const fs = require('fs')
const data = fs.readFileSync('./data.json','utf8')//字符串
const newData = JSON.parse( data )//将JSON字符串转为一个对象
const newStr = JSON.stringify( newData )//将 JavaScript 对象转换为 JSON 字符串
const state = {
msg: '千锋教育',
obj: {
x: 1,
y: 2
}
}
// 深拷贝 -> 1. 递归 2. JSON序列化实现
const newState = JSON.parse(JSON.stringify( state ))
newState.msg = " hello Node.js "
console.log('state',state)
console.log('newState',newState)

querystring 内置模块

  1. 使用场景

    • 用于处理url上的查找字符串
/*
! querystring - 应用场景: 处理url查找字符串
! 1. querystring.parse string -> object
! 2. querystring.stringify object -> string
! 3. querystring.escape 中文转码
! 4. querystring.unescape 中文解码
*/
const qs = require('querystring')
const url = require('url')
// console.log("西阁: qs", qs)
// ! 1. parse
const str = 'https://detail.tmall.com/item.htm?spm=a230r.1.14.6.7a344d82XrCvx0&id=604098442154&cm_id=140105335569ed55e27b&abbucket=2'
const newObj = qs.parse(url.parse( str ).query,'&','=')
// console.log("西阁: newObj", newObj)
/*
{
spm: 'a230r.1.14.6.7a344d82XrCvx0',
id: '604098442154',
cm_id: '140105335569ed55e27b',
abbucket: '2'
}
*/ // ! 2. stringify
const newStr = qs.stringify( newObj )
// console.log("西阁: newStr", newStr) // ! 3. escape const str1 = 'city=北京' const city = qs.escape( str1 )
console.log("西阁: city", city) // city%3D%E5%8C%97%E4%BA%AC // !4. unescape const cityCape = qs.unescape( city )
console.log("西阁: cityCape", cityCape)

path

  1. 使用场景

    • 用于处理绝对路径/磁盘路径
  2. 问题: 浏览器中全局对象是?Node.js全局变量?
    • 浏览器中全局对象: window
    • Node.js全局变量: global
const path = require('path')
console.log("西阁: path", path) // console.log( __dirname ) // 全局变量
/* e:\1911\1-Node.js\day01\code\5-内置模块 */ // const pathUrl = path.join( __dirname, 'aa')
const pathUrl = path.resolve( __dirname, 'aa')
console.log("西阁: pathUrl", pathUrl)

Node.js概述1的更多相关文章

  1. Node.js 概述

    JavaScript 标准参考教程(alpha) 草稿二:Node.js Node.js 概述 GitHub TOP Node.js 概述 来自<JavaScript 标准参考教程(alpha) ...

  2. Node.js概述

    Node.js最重要的特性:通过单线程实现异步处理环境 Node.js解决的问题: Node.js修改了客户端连接服务器端的连接方法,不需要为每个客户端连接创建一个新的线程,而是为每个客户端连接触发一 ...

  3. Node.js—概述

    一.Node.js与其他语言对比   Node.js不是一种独立的语言,与PHP.JSP.Python.Perl.Ruby的"既是语言,也是平台"不同,Node.js的使用Java ...

  4. Node.js权威指南 (1) - Node.js介绍

    1.1 Node.js概述 / 2 1.1.1 使用Node.js能够解决什么问题 / 2 1.1.2 实现高性能服务器 / 2 1.1.3 非阻塞型I/O及事件环机制 / 2 1.1.4 Node. ...

  5. 第 1 章 Node.js 介绍

    本章内容包括: 什么是 Node.js 框架,为什么要用 Node.js 框架,使用 Node.js 框架能够解决什么问题,在哪些场合下应该考虑使用 Node.js 框架. 如何下载 Node.js ...

  6. NodeJs>------->>第一章:Node.js介绍

    一:章节前言 二:Node.js概述 1:使用node.js能够解决什么问题 2:实现高性能服务器 3:非阻塞型I/O及事件环形机制 4:node.js适合开发的程序 三:node.js安装 一.No ...

  7. 《Node.js核心技术教程》学习笔记

    <Node.js核心技术教程>TOC \o "1-3" \h \z \u 1.章模块化编程 2019.2.19 13:30' PAGEREF _101 \h 1 08D ...

  8. Node.js实战(一)之概述

    , 一.Node.js介绍 Node.js是一个Javascript运行环境(runtime environment),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进 ...

  9. 基于node.js+socket.io+html5实现的斗地主游戏(1)概述

    一.游戏描述 说是斗地主游戏,其实是寝室自创的"捉双A",跟很多地方的捉红10.打红A差不多,大概规则是: 1.基础牌型和斗地主一样,但没有大小王,共52张牌,每人13张,这也是为 ...

随机推荐

  1. Django项目订单接入支付宝

    1.首先下载所需要的包 pip install python-alipay-sdk 2.在视图函数里面引入所需要的类 from alipay import AliPay 3.利用这个类创建一个实例对象 ...

  2. <scrapy爬虫>爬取校花信息及图片

    1.创建scrapy项目 dos窗口输入: scrapy startproject xiaohuar cd xiaohuar 2.编写item.py文件(相当于编写模板,需要爬取的数据在这里定义) # ...

  3. ES6之字符串学习

    以下是常用的方法不是全部方法 1.codePointAt()方法 有一些字段需要4个字节储存,这样charCodeAt方法的返回就是不正确的,用codePointAt()方法就可以返回 十进制的值.如 ...

  4. [转]C#委托的异步调用

    本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: ); //模拟该方法运 ...

  5. mysql工具使用

    mysql -u user_name -p123456 -h host_name -P 3306 -D database_name -e "show full processlist;&qu ...

  6. 阿里云 Aliplayer高级功能介绍(八):安全播放

    基本介绍 如何保障视频内容的安全,不被盗链.非法下载和传播,阿里云视频点播已经有一套完善的机制保障视频的安全播放: 更多详细内容查看点播内容安全播放,H5的Aliplayer对于上面的安全机制都是支持 ...

  7. Java内功修炼系列一责任链模式

    在上一节的拦截器中提到,程序的设计者一般会用拦截器替替代动态代理,将动态代理的逻辑隐藏起来,而把拦截器接口提供给开发者,使开发者不需要关系动态代理的具体实现过程,但是有时候需要多个拦截器,而且拦截器之 ...

  8. Webpack构建前端项目

    前言 公司据说要搞前后端分离,趁这两天项目完成的差不多,抓紧时间学习一下前端知识 现在流行前端项目工程化,那么第一个问题就是如何创建工程(项目),第一次玩webpack 通过 NPM 创建项目 # 创 ...

  9. 《DSP using MATLAB》Problem 7.28

    又是一年五一节,朋友圈都是晒名山大川的,晒脑袋的,我这没钱的待在家里上网转转吧 频率采样法设计带通滤波器,过渡带中有一个样点 代码: %% ++++++++++++++++++++++++++++++ ...

  10. MVC模式 - Model-View-Controller -(模型-视图-控制器)

    MVC(Model View Controller) MVC是一种设计典范.它是用一种业务逻辑.数据与界面显示分离的方法来组织代码,将众多的业务逻辑聚集到一个部件上,在需要改进和个性化定制界面及用户交 ...