首页 > 编程语言 >node express 相关配置

node express 相关配置

时间:2023-09-20 16:24:06浏览次数:25  
标签:node npm 配置 const express js router ###

  hbuilderX直接安装/或者通过命令行``npm init``安装
### 安装express
``npm install express --save``
在app.js中引入express
```js // 引入express框架,并使用express const express = require('express') const app = express() ```


express官网
https://www.expressjs.com.cn/
### 安装nodemon
``npm i -g nodemon``
此处可以介绍npmjs.com和nodemon
https://www.npmjs.com/package/nodemon
### 安装跨域cors
用于跨域请求
``npm install cors``
在app.js中导入cors
```js // cors跨域 const cors = require('cors') // 全局挂载 app.use(cors()) ```


https://www.npmjs.com/package/cors
### 安装body-parser
用于解析表单数据
``npm install body-parser``
在app.js中导入body-parser
```js // 解析表单数据的中间件 // 防止req.body等于undefined const bodyParser = require('body-parser') app.use(bodyParser.urlencoded({     extended: false })) app.use(bodyParser.json()) ```


https://www.npmjs.com/package/body-parser


### 创建user路由模块和user路由函数处理模块
新建router文件和router_handle文件,用于处理路由模块和路由函数处理模块
router文件下的user.js进行配置
```js // 引入express const express = require('express') // 使用express框架的路由 const router = express.Router() // 导入user路由处理模块 const userHandler = require('../router_handle/user')
// 注册 router.post('/register', userHandler.register) // 登录 router.post('/login',userHandler.login)
module.exports = router ```
在router_handle文件的user.js进行配置
```js // 导入数据库操作模块 const db = require('../db/index')
exports.register = (req, res) => {     res.send('注册成功') } exports.login = (req, res) => {     res.send('登录成功') } ```
在app.js中导入user路由模块
```js // 导入user路由模块 const userRouter = require('./router/user') app.use('/api', userRouter) ```


### 安装bcryptjs加密
用于密码加密
``npm i bcryptjs``
```js // 导入bcrypt用于数据加密 const bcrypt = require('bcryptjs') userinfo.password = bcrypt.hashSync(userinfo.password, 10) ```


### 安装joi,@escook/express-joi中间件
用于表单的优化验证
``npm i joi``
``npm i @escook/express-joi``
创建文件limit用于配置joi
在limit文件的user.js下进行配置
```js const joi = require('joi') /**  * string() 值必须是字符串  * alphanum() 值只能是包含    a-zA-Z0-9 的字符串  * min(length) 最小长度  * max(length) 最大长度  * required() 值是必填项,不能为    undefined  * pattern(正则表达式) 值必须符合正则表达式的规则  */ // 用户名的验证规则 const account = joi.string().alphanum().min(1).max(10).required() // 密码的验证规则 const password = joi     .string()     .pattern(/^[\S]{6,12}$/)     .required() // 注册和登录表单的验证规则对象 exports.register_login_limit = {     // 表示需要对req.body中的数据进行验证     body: {         account,         password,     }, } ```
在router的user.js文件中导入expressJoi进行表单验证
```js // 导入expressJoi表单验证 const expressJoi = require('@escook/express-joi') // 导入需要的验证规则对象 const {     register_login_limit } = require('../limit/user') // 注册 router.post('/register', expressJoi(register_login_limit), userHandler.register) // 登录 router.post('/login', expressJoi(register_login_limit), userHandler.login) ```


### 安装jwt
用于生成token
``npm i jsonwebtoken``
创建config.js文件,向外共享加密和还原token
```js module.exports = {  jwtSecretKey: 'qd_xiaowang', } ```
在router_handle的user.js文件中生成token
```js // 导入jwt用于生成token const jwt = require('jsonwebtoken') // 导入jwt配置文件 const jwtconfig = require('../jwt_config')
// 剔除了密码、头像、创建时间和更新时间,...为es6的扩展运算符 const user = {     ...results[0],     password: '',     avatar: '',     create_time:'',     update_time:'', } // 有效时间7个小时 const tokenStr = jwt.sign(user, jwtconfig.jwtSecretKey, {     expiresIn: '7h', // token 有效期为    10 个小时 }) res.send({     status: 0,     message: '登录成功!',     // 为了方便客户端使用Token,在服务器端直接拼接上Bearer的前缀     token: 'Bearer ' + tokenStr, }) ```


### 安装express-jwt
用于解析token
``npm i express-jwt``
在app.js中添加解析token的中间件
```js // 导入jwt配置文件 const jwtconfig = require('./jwt_config') // 用于解析token的中间件 const { expressjwt:jwt } = require("express-jwt") // algorithms为加密的算法,unless排除不需要token的接口 app.use(jwt({     secret: jwtconfig.jwtSecretKey,algorithms: ['HS256'] }).unless({     path: [/^\/api\//] })) ```


### 安装multer
用于上传图片
``npm i multer``
```js // 导入multer用于上传图片 const multer = require("multer"); const upload = multer({ dest:'./public/upload' }) app.use(upload.any()) app.use(express.static("./public")); ```
结构
```js {     "originalname": "test.jpg",     "encoding": "7bit",     "mimetype": "image/jpeg",     "destination": "./public/upload",     "filename": "38322fe267c111c99ea1938bc4c637f8",     "path": "public\\upload\\38322fe267c111c99ea1938bc4c637f8",     "size": 278011 } ```




### 安装mysql
新建db文件夹,index.js文件,引入mysql并创建数据库的连接
``npm install mysql``
```js // 引入mysql const mysql = require('mysql')
// 创建数据库的连接 // backManageSystem const db = mysql.createPool({   host: 'localhost',   user: 'bms',   password: '123456',   database: 'bms' })
// 向外导出数据库 module.exports = db ```


### 安装小皮面板并创建数据库
https://www.xp.cn/
### 安装navicat for mysql
建立数据表




## 前端
### 第一步 安装vue
``npm init vue@latest``
### 安装vue-router
``npm install vue-router@4``
创建src目录下router目录下index.js文件夹,用来写路由文件
```js import {     createRouter,     createWebHashHistory } from 'vue-router'
const routes = [{     //路由部分 }]
const router = createRouter({     history: createWebHashHistory(),     routes })
export default router ```


在入口文件mian.js导入router并注册
```js // 导入路由 import router from './router'
app.use(router).mount('#app') ```


### 安装element-plus和Icon图标
``npm install element-plus --save``
``npm install @element-plus/icons-vue``
全局导入element-plus并配置国际化
```js // 全局导入elementPlus import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' // elementPlus国际化 import zhCn from 'element-plus/dist/locale/zh-cn.mjs' // 从 @element-plus/icons-vue 中导入所有图标并进行全局注册。 import * as ElementPlusIconsVue from '@element-plus/icons-vue'
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {   app.component(key, component) } // 注册组件 app.use(ElementPlus, {   locale: zhCn, }) app.use(ElementPlus)
app.use(router).mount('#app') ```
### 安装axios
``npm install axios``
### 安装echarts
``npm install echarts``
### 安装Mitt
``npm install mitt``
新建文件mitt导入mitt并暴露
```JS import mitt from 'mitt' export const bus = mitt() ```
在需要的地方进行引入
```js import bus from './mitt' ```
使用方法
```js // 父组件 bus.emit('函数名', 需要传的值)
//子组件 bus.on('函数名',(接收到的值)=>{     逻辑操作 }) ```
### 安装sass
``npm i sass-loader -s``
``npm i style-loader -s``
``npm i sass -s``
并在vite.config.js内进行sass配置
```js export default defineConfig({     plugins: [vue()],     // 这个是配置scss     pluginOptions: {         'style-resources-loader': {             preProcessor: 'scss',             patterns: []         }     }, }) ```
### 设置src路径快捷方式
在vite.config.js中设置
```js import { resolve } from 'path' const pathResolve = dir => resolve(__dirname, dir) // defineConfig中添加如下配置     resolve: {         alias: {             '@': pathResolve('./src') // 设置 `@` 指向 `src` 目录         }     } ```


### 设置服务启动的端口以及跨域
在vite.config.js中设置
```js // defineConfig中添加如下配置     server: {         port: 8080, // 设置服务启动端口号         open: true, // 设置服务启动时是否自动打开浏览器         cors: true, // 允许跨域     }, ```


### 安装vite-plugin-svg-icons
找不到合适的图标,使用svg-icon,阿里巴巴图标
``npm i vite-plugin-svg-icons``
``npm i fast-glob``
vite.config.js中进行配置
```js import {     createSvgIconsPlugin } from 'vite-plugin-svg-icons'
// 在plugins中添加         createSvgIconsPlugin({             iconDirs: [resolve(process.cwd(), 'src/assets/svg')],             symbolId: 'icon-[dir]-[name]',         }), ```
在assets下新建svg文件夹用来存放svg图
在components文件中创建SvgIcon.vue文件封装svg组件
```vue <template>     <svg aria-hidden="true" :style="{ width: size + 'px', height: size + 'px' }">         <use :xlink:href="symbolId" :fill="color" />     </svg> </template> <script setup lang="ts"> import { computed } from 'vue';
const props = defineProps({     iconName: {         type: String,         required: true     },     color: {         type: String,         default: ''     },     size: {         type: [Number, String],         default: 18     } }) const symbolId = computed(() => `#icon-${props.iconName}`);
</script>

<style scoped> .svg-icon {     fill: currentColor;     vertical-align: middle; } </style> ```
在main.js中导入文件
```js // 导入svg图标 import 'virtual:svg-icons-register' ```
最后在需要的文件中使用图标







标签:node,npm,配置,const,express,js,router,###
From: https://www.cnblogs.com/Baipei/p/17717662.html

相关文章

  • Hbase--执行hbase shell命令时提示:ERROR: KeeperErrorCode = NoNode for /hbase/mast
    1、问题描述执行hbase shell命令时提示:ERROR:KeeperErrorCode=NoNodefor/hbase/master2、问题原因这是与因为服务器重启后Hadoop的运行和Hbase的运行异常。3、解决办法依次去停止和启动Hadoop(1)到hadoop的sbin目录下 ./stop-all.sh(2)再./start-all.sh(3)再到hbase的b......
  • LINUX下Subversion安装配置
    Subversion1.3.2安装以及配置1.Subrsion安装#tarxvzfSubversion-1.3.2.tar.gz#cdSubversion-1.3.2#./configure--with-apxs=/usr/local/apache2/bin/apxs--prefix=/usr/local/subversion#make#makeinstall2.Subversion的建立与使用仓库使用$mkdir/var/repos......
  • linux系统硬件配置查看方法
    一:查看cpumore/proc/cpuinfo|grep"modelname"grep"modelname"/proc/cpuinfo如果觉得需要看的更加舒服grep"modelname"/proc/cpuinfo|cut-f2-d: 二:查看内存grepMemTotal/proc/meminfogrepMemTotal/proc/meminfo|cut-f2-d:free-m|grep&qu......
  • java 运行 jar classpath配置
    按照developrworks上说的: http://www.ibm.com/developerworks/cn/java/j-jar/index.html 创建可执行JAR创建一个可执行JAR很容易。首先将所有应用程序代码放到一个目录中。假设应用程序中的主类是 com.mycompany.myapp.Sample。您要创建一个包含应用程序代码的JAR文件并标......
  • Tomcat集群配置学习篇-----分布式应用
    Tomcat集群配置学习篇-----分布式应用现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量;大家知道如果服务器访问量过大,就会出现服应用务器崩溃的情况,这个时候怎么办,难道就只能去重启服务器吗?好,如果是一般的小......
  • centos 7配置与调优
    centos7配置调优#颜色echo"PS1='\[\033[35m\][\[\033[00m\]\[\033[31m\]\u\[\033[33m\]\[\033[33m\]@\[\033[03m\]\[\033[35m\]\h\[\033[00m\]\[\033[5;32m\]\w\[\033[00m\]\[\033[35m\]]\[\033[00m\]\[\033[5;31m\]\\......
  • H3C交换机配置学习
    H3C交换机配置学习 设备型号:H3C3600V2工业交换机(配置同厂商交换机类似)所需设备:一台笔记本电脑、一条配置线(console线)、终端登录软件(SecureCRT、XShell…) 配置说明:采用串口通信的方式进行配置主要步骤:1、安装终端登录软件在笔记本(配置)电脑上;2、物理连接:用console(配置......
  • quartz 时间配置规则
    格式:[秒][分][小时][日][月][周][年] 序号说明 是否必填 允许填写的值允许的通配符 1 秒 是 0-59  ,-*/ 2 分 是 0-59 ,-*/ 3小时 是 0-23 ,-*/ 4 日 是 1-31 ,-*?/LW 5 月 是 1-12orJAN-DEC ,-*/ 6 周 是 1-7o......
  • Hadoop集群的NameNode的备份
    Hadoop集群中,NameNode节点存储着HDFS上所有文件和目录的元数据信息如果NameNode挂了,也就意味着整个Hadoop集群也就完了所以,NameNode节点的备份很重要,可以从以下2个方面来备份NameNode节点1.在hdfs-site.xml中,配置多个name的dir到不同的磁盘分区上:<property>   <name>dfs.name.......
  • 记录 小程序调用前置摄像头的数据获取及简单配置
    业务是需要调取前置摄像头之后获取图片上代码wx.chooseMedia({count:1,//只允许上传一张照片 mediaType:['image'],//文件类型sizeType:['original','compressed'],//是否压缩所选文件,original原始compressed压缩......