ES Module
package.json中添加type: "module"
或命名文件为.mjs
commonJS
const arr = [1, 2, 3];
arr.push(4); # 增
arr.unshift(0); # 增
const val = arr.pop(); # 删
const val = arr.shift(); # 删
arr.length # 查
const narr = arr.map((val, idx, arr) => {
});
const narr = arr.filter((val, idx, arr) => {
});
arr.forEach((val, idx, arr) => {
});
# 初始化next.js项目
npx create-next-app@latest
# 更换为淘宝镜像源 设置网络代理
npm config set registry https://registry.npmmirror.com
npm config set proxy 127.0.0.1:7890
npm config set https-proxy 127.0.0.1:7890
npm config delete proxy
npm config get proxy
npm config list --json
# 脚本 在package.json中定义脚本
npm run # 查看可用脚本
npm run dev
npm run build
# 安装在package.json中定义的依赖
npm install
# 运行install后会生成node_modules文件夹和package-lock.json
npm install -g vite # 全局安装
C:\Users\\AppData\Roaming\npm\node_modules
/home/latin/.nvm/versions/node/v22.14.0/lib/node_modules
npm install tailwindcss # 为用户或项目安装, 会在package.json中加入依赖
C:\Users\\node_modules ~/node_modules
npm uninstall tailwindcss
npm init # 创建项目 生成package.json文件
npx 用来运行包中的可执行程序
npm trends: Compare NPM package downloads
@heroicons/react # 图标库 https://heroicons.com/
组件总览 - Ant Design
antd
为 Web 应用提供了丰富的基础 UI 组件
css选择库
className={clsx(
"p-6 mx-8 mb-8 bg-gray-100",
{
"border-2": !fileEnter,
"border-4": fileEnter,
},
)}
Lodash 简介 | Lodash中文文档 | Lodash中文网
实用工具集 import _ from 'lodash';
let newrInfo = _.cloneDeep(rInfo); # 深拷贝
_.set(obj, 'a[0].b.c', 4); # 修改对象的值
_.get(obj, 'a.b.c', 'default'); # 获得对象的值
_.omit(obj, ['a', 'c']); # 忽略对象中的这些属性, 不修改对象
_.size(obj)
_.isEmpty(obj)
_.includes(collection, value);
_.keys(obj)
_.forEach(obj, (val, key) => {}); # 修改原集合, 不会返回
_.map(colle, ele => {}); # 不会修改原集合, 返回新集合
_.assign(tgt, src1, src2); # 将tgt中的属性修改
_.zipObject(arr1, arr2) # arr1作为key, arr2作为value
_.concat(array, 2, [3], [[4]]); # 返回[1, 2, 3, [4]], 不修改
node.js的web框架
const Koa = require("koa");
const app = new Koa();
app.listen(5000, () => prints.printBanner("游戏主服务启动,监听5000"));
app.use(bodyParser()); # 使用解析中间件
app.use(router.routes()).use(router.allowedMethods("*")); # 使用路由中间件
app.use(async (ctx, next) => {
let {method, url, header} = ctx.request;
ctx.set("Access-Control-Allow-Origin", "*");
ctx.set('Access-Control-Allow-Methods', 'POST,GET,OPTIONS,PUT,DELETE');
ctx.set('Access-Control-Allow-Headers', 'Content-type');
ctx.set('Content-Type', 'application/json;charset=UTF-8');
await next(); # 继续使用中间件
});
koa-router是路由插件, 用于处理 HTTP 请求的路径和方法
const router = require('koa-router')();
const user = require('./user');
router.use('/user', user.routes(), user.allowedMethods());
const user = new Router();
user.post('/login', async ctx => {
let response;
ctx.body = response;
});
Migrations | Sequelize
用法示例:GitHub - liumengniu/majiang-server: 基于laya3.x引擎 + nodejs 开发的湖南麻将
# 生成config, model, migrations, seeders
npx sequelize-cli init
# 创建Model, 在model文件夹下直接生成user.js
npx sequelize-cli model:generate --name User --attributes firstName:string,lastName:string,email:string
# 生成空迁移文件
npx sequelize-cli migration:generate --name create-user(迁移文件名字)
# 提交到数据库
npx sequelize-cli db:migrate
const models = require("@/models");
const User = models.User;
# 删
async deleteUser(id) {
await User.destroy({where: {id}});
}
# 改
await User.update({bestRecord: record, coin: user.coin + gold}, {where: {id: userId}});
# 查
let user = await User.findOne({where: {id: userId}});
let users = await User.findAll({where: {id: ids}});
# 增
let userInfo = await User.create(newUser);
HTTP请求库
const {data} = await got.post('https://httpbin.org/anything', {
json: {
hello: 'world'
}
}).json();
Bluebird
是一个性能更高、功能更丰富的 Promise
库
global.Promise = require('bluebird');
状态管理库
nvm是node.js多版本控制工具
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
# 安装nvm
nvm install 20 # 安装node.js版本20
nvm use 16 # 使用版本16的node.js 仅本次终端有效