首页 > 编程语言 >第一章、nodejs高级

第一章、nodejs高级

时间:2023-02-20 23:11:17浏览次数:50  
标签:npm ######## http nrm nodejs 高级 yarn 第一章

目录

一、nodejs基础

1、认识nodejs
* nodejs是一个javascript运行环境,它让javascript可以开发后端程序,实现几乎其他后端
  语言实现的所有功能,可以与php、java、python、.net、ruby等后端语言平起平坐
* nodejs是基于v8引擎,v8是google发布的开源javascript引擎,本身就是用于chrome浏览器
  的js解释部分,但是ryan dahl这哥们,鬼才般的,把这个v8搬到了服务器上,用于做服务器的软件
2、nodejs的特性
* nodejs语法完全是js语法,只要你懂js基础就可以学会nodejs后端开发
* nodejs超强的高并发能力,实现高性能服务器
* 开发周期短、开发成本低、学习成本低
3、使用nodejs需要了解多少javascript
* http://nodejs.cn/learn/how-much-javascript-do-you-need-to-know-to-use-nodejs
4、浏览器环境vs node环境
* chrome浏览器
    - html/css - javascript
    - blink - v8
    - 中间层
    - 操作系统(网卡/硬盘/显卡...)
* node
    - javascript
    - v8
    - 中间层(libuv)
    - 操作系统(网卡/硬盘/显卡...)
* nodejs可以解析js代码(没有浏览器安全级别的限制)提供很多系统级别的api,如:
    - 文件的读写(file system)
########
const fs = require("fs")

fs.readFile("./ajax.png", "utf-8", (err, content) => {
  console.log(content)
})
########
    - 进程的管理(process)
########
function main(argv) {
  console.log(argv)
}

main(process.argv.slice(2))
########
    - 网络通信(http/https)
########
const http = require("http")
http.createServer((req, res) => {
  res.writeHead(200, {
    "content-type": "text/plain"
  })
  res.write("hello nodejs")
  res.end()
}).listen(3000)
########
5、开发环境搭建
* http://nodejs.cn/download/

二、模块、包、commonjs

1、为什么要有模块化开发
* 依赖关系 - 命名空间 - 代码组织
* 纠结的编程体验
* 定义 - 暴露接口 - 引用
2、commonjs规范
* modules、binary、packages、console、system、encodings、filesystems、sockets
* nodejs/webpack(部分实现规范)
3、modules模块化规范写法
* 我们可以把公共的功能抽离成为一个单独的js文件作为一个模块,默认情况下面这个模块里面的方法或者属性,
  外面是没法访问的。如果要让外部可以访问模块里面的方法或者属性,就必须在模块里面通过exports或者
  module.exports暴露属性或者方法。
########
// m1.js
const name = "gp19"

const sayName = () => {
  console.log(name)
}

console.log("module 1")

// 接口暴露方法一:
module.exports = {
  say: sayName
}

// 接口暴露方法二:
exports.say = sayName

/*
// 错误!
exports = {
  say: sayName
}
*/
########
########
// main.js
const m1 = require("./m1")
m1.say()
########

三、npm&yarn

1、npm的使用
npm init
npm install 包名 -g(uninstall、update)
npm install 包名 --save-dev(uninstall、update)
npm list -g(不加-g,列举当前目录下的安装包)
npm info 包名(详细信息) npm info 包名 version(获取最新版本)
npm install md5@1(安装指定版本)
npm outdated(检查包是否已经过时)
########
"dependencies": {"md5": "^2.1.0"}:^表示如果直接npm install将会安md5 2.*.*最新版本
"dependencies": {"md5": "~2.1.0"}:~表示如果直接npm install将会安装md5 2.1.*最新版本
"dependencies": {"md5": "*"}:*表示如果直接npm install将会安装md5最新版本
########
2、全局安装nrm
* nrm(npm registry manager)是npm的镜像源管理工具,有时候国外资源太慢,使用这个就可以快速地在
  npm源间切换
* 手动切换方法:npm config set registry https://registry.npm.taobao.org
* 安装nrm:在命令行执行命令,npm install -g nrm,全局安装nrm
* 使用nrm:执行命令nrm ls查看可选的源。其中,带*的是当前使用的源,上面的输出表明当前源是官方源
* 切换nrm:如果要切换到taobao源,执行命令nrm use taobao
* 测试速度:你还可以通过nrm test测试相应源的响应时间
    - nrm test
* 扩展:中国npm镜像,这是一个完整npmjs.org镜像,你可以用此代替官方版本(只读),同步频率目前为10分钟
  一次以保证尽量与官方服务同步。
    - npm install -g cnpm --registry=https://registry.npmmirror.com
3、yarn使用
* npm install -g yarn
* 对比npm:
    - 速度超快:yarn缓存了每个下载过的包,所以每次使用时无需重复下载。同时利用并行下载以最大
      化资源利用率,因此安装速度更快。
    - 超级安全:在执行代码之前,yarn会通过算法校验每个安装包的完整性
* 开始新项目
    - yarn init
*添加依赖包
    - yarn add [package]
    - yarn add [package]@[version]
    - yarn add [package] --dev
* 升级依赖包
    - yarn upgrade [package]@[version]
* 移除依赖包
    - yarn remove [package]
* 安装项目的全部依赖
    - yarn install

四、内置模块

1、http模块
// 要使用http服务器和客户端,则必须require("http")
const http = require("http")

// 创建本地服务器来从其接收数据
const server = http.createServer((req, res) => {
  res.writeHead(200, {"Content-Type": "application/json"})
  res.end(JSON.stringify({
    data: "Hello World!"
  }))
})

server.listen(8000)
const http = require("http")

// 创建本地服务器来从其接收数据
const server = http.createServer()

// 监听请求事件
server.on("request", (req, res) => {
  res.writeHead(200, {"Content-Type": "application/json"})
  res.end(JSON.stringify({
    data: "你好世界!"
  }))
})

server.listen(8000)
2、url模块

标签:npm,########,http,nrm,nodejs,高级,yarn,第一章
From: https://www.cnblogs.com/linding/p/17139353.html

相关文章

  • 第一章:走进DOCKER的世界
    介绍docker的前世今生,了解docker的实现原理,以Django项目为例,带大家如何编写最佳的Dockerfile构建镜像。大家会知道docker的概念及基本操作,并学会构建自己的业务镜像,并通......
  • DRF_序列化and反序列化之高级
    1.source用法序列化器内的使用book_name=serializers.CharField(max_length=8,min_length=3,source='name')可以是字段,可以跨表,甚至可以是方法classB......
  • C++ primer 5th 第一章阅读笔记
    第一章开始第一节编写一个简单的C++程序不同编译器使用不同的后缀命名约定,比如cc、cpp、c。比如main程序保存到prog1.cc中,可以使用如下命令来编译它:ccprog1.cc。其中......
  • 操作系统高级教程期末思考题
    19年期末复习题1.为什么开始启动计算机的时候,执行的是BIOS代码而不是操作系统自身的代码?最开始启动计算机的时候,计算机内存未初始化,没有任何程序。而因为CPU只能读取内存......
  • 【译】实时体渲染——第一章 体渲染
    1译者前言毕设打算做体素渲染器,导师给了paper(或者是书?),《Real-TimeVolumeGraphics》开个坑,监督自己认真看完。【不是英语专业的,随手写的,不要较真】PartI导论1体......
  • 高级算法设计与分析期末预习
    第一章要会通过递推式算复杂度用递推树求解它的时间复杂度哈夫曼zyb说不会考(4-24-34-4)瞎看看......
  • NodeJS:使用 superagent 和 cheerio 爬取网页
    安装依赖:npminstallsuperagentcheerio--save同步代码:constsuperagent=require('superagent')constcheerio=require('cheerio')constfs=require('fs')f......
  • 第一章 开始
    第一章开始熟悉编译器g++:编译:g++--std=c++11ch01.cpp-omain运行:./prog1查看运行状态:echo$?编译多个文件:g++ch2.cppSales_item.cc-omain输入g++--hel......
  • nodejs
     Node.js/usr/local/bin/nodenpm /usr/local/bin/npm Thispackagehasinstalled:Node.jsv19.6.1to/usr/local/bin/nodenpmv9.4.0to/usr/local/bin/npm......
  • NodeJS安装(Mac版本)
    nvm,node,npm之间的区别nvm:nodejs版本管理工具。也就是说:一个nvm可以管理很多node版本和npm版本。nodejs:在项目开发时的所需要的代码库npm:nodejs包管理工具。......