# questionnaire_investigation **Repository Path**: Motato/questionnaire_investigation ## Basic Information - **Project Name**: questionnaire_investigation - **Description**: 问卷调查 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-09 - **Last Updated**: 2024-09-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # quickly-build-js #### 介绍 快速搭建 js 全栈项目 #### 软件架构 软件架构说明 web -- 采用 vue/cli 快速搭建可用的前端框架 采用 element-ui 经典组件技术完成网站搭建 server -- 采用 express 经典框架作为主要框架 sql -- 根据不同分支,主要用 mysql 和 mongdb 两种主流数据库作为实际 mysql 分支 mysql 增删改查 mongdb 分支 mongdb 增删改查 sqlite 分支 sqlite 增删改查 egg 分支 采用 eggjs+mysql 框架 (注意该分支 node 请采用 18 以上版本 分支采用 node v18.20.0) node 版本 -- v16.18.0 npm -- v8.19.2 #### 安装教程 1. nvm 下载地址 https://nvm.uihtm.com/download.html 2. mongodb 下载地址 https://www.mongodb.com/try/download/community 3. mysql 下载地址 https://dev.mysql.com/downloads/file/?id=528765 4. mysql workbrench 下载地址 https://dev.mysql.com/downloads/workbench/ #### 使用说明 1. element ui 官网地址 https://element.eleme.io/#/zh-CN/ 2. sequelize 官网地址 https://www.sequelize.cn/core-concepts/assocs 1. 全局安装 sequelize-cli 可以进行快速配置 2. sequlize init 3. sequlize db:create 快速创建数据库 4. sequlize model:generate --name ModelName --attribute attributeName1:type,attributeName2:type 5. sequlize db:migrate 将模型在数据库生成 6. 操作 seed 可以给数据库添加数据 3. vue/cli 使用 vue2(3 实在使用不来,而且 ts 还是用不太管,当然回头可以研究下)然后 build 直接生成到 server 内 npm i -g vue/cli vue create web vue add axios 4. express 使用 express-generator 快速生成。具体方法为: npm i -g express-generator express -e server 5. eggjs 使用说明 https://www.wenjiangs.com/doc/9zmg4hm2ll //官网https://eggjs.org/zh-cn/core/security.html npm init egg --type=simple npm i --save egg-mysql npm install --save egg-sequelize mysql2 npm install --save-dev sequelize-cli 新建文件.sequelizerc sequelize init:config sequelize init:migrations sequelize migration:generate --name=init-users 生成的文件中,设置初始化 #----------------------------分割线----------------------# 'use strict'; module.exports = { // 在执行数据库升级时调用的函数,创建 users 表 up: async (queryInterface, Sequelize) => { const { INTEGER, DATE, STRING } = Sequelize; await queryInterface.createTable('users', { id: { type: INTEGER, primaryKey: true, autoIncrement: true }, name: STRING(30), age: INTEGER, created_at: DATE, updated_at: DATE, }); }, // 在执行数据库降级时调用的函数,删除 users 表 down: async (queryInterface) => { await queryInterface.dropTable('users'); }, }; #----------------------------分割线----------------------# 升级数据库 sequelize db:migrate 如果有问题需要回滚,可以通过 `db:migrate:undo` 回退一个变更 sequelize db:migrate:undo 可以通过 `db:migrate:undo:all` 回退到初始状态 sequelize db:migrate:undo:all 在 app/model 下创建 user.js,创建 user 的 model 在 app/controller 下创建 users.js,完成 CURD 的编写 单元测试 npm install --save-dev factory-girl 定义 factory-girl 的数据模型到 test/factories.js 中 初始化文件 test/.setup.js,引入 factory,并确保测试执行完后清理数据,避免被影响。 编写真正的测试用例了 正式使用出现 token 问题 需要系列操作来增加 token 验证机制 npm i egg-jwt --save # 常见问题: 提示 No babel 。。。。 在 package.json 里面添加 "requireConfigFile": false 即可