目录
简介
Node.js 是一个开源和跨平台的 JavaScript 运行时环境。
Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使得 Node.js 的性能非常好。
Node.js 应用程序在单个进程中运行,无需为每个请求创建新的线程。 Node.js 在其标准库中提供了一组异步的 I/O 原语,以防止 JavaScript 代码阻塞,通常,Node.js 中的库是使用非阻塞范式编写的,使得阻塞行为成为异常而不是常态。
当 Node.js 执行 I/O 操作时(比如从网络读取、访问数据库或文件系统),Node.js 将在响应返回时恢复操作(而不是阻塞线程和浪费 CPU 周期等待)。
这允许 Node.js 使用单个服务器处理数千个并发连接,而不会引入管理线程并发(这可能是错误的重要来源)的负担。
Node.js 具有独特的优势,因为数百万为浏览器编写 JavaScript 的前端开发者现在无需学习完全不同的语言,就可以编写除客户端代码之外的服务器端代码。
在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为你不必等待所有用户更新他们的浏览器,你负责通过更改 Node.js 版本来决定使用哪个 ECMAScript 版本,你还可以通过运行带有标志的 Node.js 来启用特定的实验性功能。
下载
Linux安装配置
解压nodejs
解压缩下载后的node-v18.2.0-linux-x64.tar.xz文件
解压到主目录下的opt文件中并重命名为nodejs
配置nodejs
ctrl+h找到主目录下隐藏文件.bashrc文件
打开.bashrc文件最低端配置nodejs环境变量
export NODEJS_HOME=/home/lhz/opt/nodejs
export PATH=$PATH:$NODEJS_HOME/bin
终端测试
升级 npm
npm update npm
npm install cnpm -g
cnpm install yarn -g
Windows安装配置
下载解压nodejs
nodejs-中文网
解压到D盘的dev目录
并重命名为nodejs
配置nodejs
复制路径
D:\dev\nodejs
window+R在运行台中输入
sysdm.cpl
调出系统属性选择高级
选择环境变量
找到变量Path路径点击编辑
新建并粘贴复制的nodejs文件路径点击确定
测试nodejs
升级npm
模块化
app.js
// Es6 语法
import * as m02 from './m02.js'
import { slogan, love } from './m03.js'
import m04 from './m04.js'
console.log(m02.slogan);
m02.love();
console.log(slogan);
love();
console.log(m04.slogan);
m04.love();
app.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>模块化</title>
</head>
<body>
</body>
</html>
<script src="./src/js/app.js" type="module"></script>
初始化Nodejs项目
npm init --yes
{
"name": "module",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}
- version 表明了当前的版本。
- name 设置了应用程序/软件包的名称。
- description 是应用程序/软件包的简短描述。
- main 设置了应用程序的入口点。
- private 如果设置为 true,则可以防止应用程序/软件包被意外地发布到 npm。
- scripts 定义了一组可以运行的 node 脚本。
- dependencies 设置了作为依赖安装的 npm 软件包的列表。
- devDependencies 设置了作为开发依赖安装的 npm 软件包的列表。
- engines 设置了此软件包/应用程序在哪个版本的 Node.js 上运行。
- browserslist 用于告知要支持哪些浏览器(及其版本)。
安装cowsay
npm i -g cowsay
npx cowsay -f kitty 你好
路径
file:///home/lhz/opt/nodejs/lib/node_modules/cowsay/cows
安装babel工具
npm i babel-cli babel-preset-env browserify -D
编译(js为源文件夹 dist/js 为目标文件夹,会自动生成)
–presets=babel-preset-env /可以单独配置babel配置文件实现
npx babel src/js -d dist/js --presets=babel-preset-env
browserify
app.js中 require 浏览器还是不识别,需要再次转换
npx browserify dist/js/app.js -o dist/bundle.js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>bundle</title>
</head>
<body>
</body>
</html>
<script src="./dist/bundle.js"></script>
引入npm模块
npm i jquery
jQuery.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>jquery</title>
</head>
<body>
</body>
</html>
<script src="./node_modules/jquery/dist/jquery.min.js"></script>
<script>
$(function(e) {
$('body').css('background', '#ff00ff');
});
</script>
Nodejs模块化
m05.js
const slogan = '桃李不言下自成蹊';
const love = () => {
return '我爱你中国 亲爱的母亲';
}
module.exports = {
slogan: slogan,
love: love
}
r05.js
const m05 = require('./src/js/m05')
console.log(m05.slogan);
console.log(m05.love());
vscode中安装Code Runner
点击右上角三角运行
m06.js
console.log(module);
模块信息
m07.js
exports.name = '张三';
r07.js
const m07 = require('./src/js/m07')
console.log(m07);
console.log(m07.name);
m08.js
// 同步执行
console.log('桃李不言');
// let time = new Date().getTime();
// while (new Date().getTime() - time < 6000) {
// }
// 异步执行
let nums = 0;
let time = setInterval(() => {
nums++;
if (nums == 6) {
clearInterval(time);
console.log('我爱你中国 亲爱的母亲');
}
}, 1000);
m09.js
console.log('下自成蹊');
r08.js
const m08 = require('./src/js/m08')
const m09 = require('./src/js/m09')
Nodejs创建HTTP服务
mkdir httpServer
cd httpServer
npm init --yes
新建文件node.js
// 引入http模块
const http = require('http');
// 使用http模块创建httpServer
const server = http.createServer();
// 处理HTTP请求
server.on('request', function(request, response) {
// 设置响应头
response.writeHead(200, { 'Content-type': 'text/html;charset=utf-8' });
// 给客户端发送字符串
response.write('<h3>我爱你中国<h3>');
// 结束响应 (关闭输出流)
response.end();
});
// 端口监听 (启动的服务)
server.listen(6633, function() {
console.log('服务已启动,请访问http://127.0.0.1:6633');
});