# recruit-app
基于 NodeJS 实现的招聘网站
## 1. 项目的功能
用于招聘的 WebApp,实现了登陆、注册、实时聊天等功能,前后端分离,采用纯前端渲染
## 2. Client Side Render
### 2.1 Client Side
#### 2.1.1 技术选型
前端技术选型包括:
- webpack
- es6+
- react、redux、react-redux、react-router、antd-mobile
- axios
#### 2.1.2 工程架构
> (1) editorconfig
editorconfig 可以对空白行、缩进等编码格式进行格式化,这种格式化与编程语言无关,有助于团队协作,配置步骤如下:
- VSCode 安装 'EditorConfig for VS Code' 插件(默认下载 editorconfig npm package),该插件会在工作目录调用 editorconfig npm package
- 在工程目录下,添加 .editorconfig 文件,对全局的 editorconfig 进行相关配置
```conf
root = true
[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline= true
trim_trailing_whitespace = true
```
> (2) eslint
eslint 是 ecmascript 编程格式的校验工具,有助于团队的编程格式统一,配置步骤如下:
- VSCode 安装 'ESLint' 插件,该插件会在工作目录调用 eslint 相关的 npm package
- 安装相关的 npm package:
```cmd
$ npm i -D \
eslint \
babel-eslint \
eslint-config-standard \
eslint-config-airbnb \
eslint-plugin-import \
eslint-plugin-jsx-a11y \
eslint-plugin-node \
eslint-plugin-promise \
eslint-plugin-react \
eslint-plugin-standard
```
- 在工程目录下,添加 .eslintrc 文件,对全局的 eslint 进行相关配置,在 client/ 目录下添加 .eslintrc 文件,对 client/ 目录的 eslint 进行相关配置
```json
// ./.eslintrc
{
"extends": ["standard"],
"rules": {}
}
```
```json
// ./client/.eslintrc
{
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module",
"jsx": true
},
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": ["../.eslintrc", "airbnb"],
"rules": {}
}
```
> (3) git
避免团队成员上传不符合规范的代码,配置步骤如下:
- 安装相关 npm package
```cmd
$ npm i -D husky
```
- 在 package.json 文件中,添加 npm script 和 husky.hooks 如下,在代码提交时用 eslint 检测代码规范:
```json
{
"scripts": {
"lint": "eslint --ext .js -- ext .jsx client/"
},
"husky": {
"hooks": {
"pre-commit": "npm run lint"
}
}
}
```
- 在工程目录下添加 .gitignore 文件
> (4) webpack
开发环境和生产环境有部分配置重叠,配置步骤如下:
- 安装相关 npm package:
```cmd
$ npm i -D \
eslint-loader \
babel-loader \
@babel/core \
@babel/preset-env \
@babel/preset-react \
@babel/plugin-proposal-decorators \
@babel/plugin-proposal-class-properties \
@bable/plugin-transform-runtime \
raw-loader \
url-loader \
style-loader \
css-loader \
postcss-loader \
postcss-import \
postcss-preset-env \
cssnano \
autoprefixer \
postcss-flexbugs-fixes \
less-loader \
less \
html-webpack-plugin \
webpack-dev-server \
webpack \
webpack-cli \
cross-env \
rimraf
$ npm i -S react-hot-loader
```
- 配置 webpack.config.client.js、webpack.config.index.js、.babelrc、postcss.config.js 文件
```javascript
// webpack.config.client.js => 开发环境和生产环境共用的配置
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
mode: 'production',
resolve: {
extensions: ['.js', '.jsx'],
alias: {
'@': path.join(__dirname, '../client')
}
},
entry: {
index: path.join(__dirname, '../client/index.js')
},
output: {
path: path.join(__dirname, '../public'),
publicPath: '/public/',
filename: '[name].[hash].js'
},
module: {
rules: [
{
enforce: 'pre',
test: /\.(js|jsx)$/,
use: 'eslint-loader',
exclude: [path.join(__dirname, '../node_modules')]
},
{
test: /\.(js|jsx)$/,
use: 'babel-loader',
exclude: [path.join(__dirname, '../node_modules')]
},
{
test: /\.txt$/,
use: 'raw-loader'
},
{
test: /\.(png|jpg|jpeg|gif|svg|eot|ttf|woff|woff2)$/,
use: [{ loader: 'url-loader', options: { limie: 8192 } }]
},
{
test: /\.less$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
modules: true,
importLoaders: 2,
camelCase: true
}
},
{
loader: 'postcss-loader',
options: {
ident: 'postcss'
}
},
{
loader: 'less-loader',
options: {
javascriptEnabled: true
}
}
],
exclude: [path.join(__dirname, '../node_modules')]
}
]
},
plugins: [
new HtmlWebpackPlugin({
minify: { removeAttributeQuotes: true },
template: path.join(__dirname, '../client/index.html'),
filename: 'index.html'
})
]
};
```
```javascript
// webpack.config.index.js => 开发环境和生产环境不同的配置
const path = require('path');
const webpack = require('webpack');
const clientConfig = require('./webpack.config.client');
const isDev = process.env.NODE_ENV === 'development';
if (isDev) {
clientConfig.mode = 'development';
clientConfig.plugins.push(new webpack.HotModuleReplacementPlugin());
configConfig.devtool = '#cheap-module-eval-source-map';
clientConfig.devServer = {
host: '0.0.0.0',
port: '8888',
contentBase: path.join(__dirname, '../public'),
publicPath: '/public',
historyApiFallback: { index: '/public/index.html' },
overlay: { errors: true },
hot: true
};
} else {
}
module.exports = clientConfig;
```
```json
// .babelrc
{
"presets": [["@babel/preset-env", { "loose": true }], "@babel/preset-react"],
"plugins": [
["@babel/plugin-proposal-decorators", { "legacy": true }],
["@babel/plugin-proposal-class-properties", {"loose": true }],
"@babel/plugin-transform-runtime"
"react-hot-loader/babel",
]
}
```
```js
// .postcss.config.js
module.exports = {
plugins: {
'postcss-import': {},
'postcss-preset-env': {},
cssnano: {},
autoprefixer: {
browsers: [
'>1%',
'last 4 versions',
'Firefox ESR',
'not ie < 9' // React doesn't support IE8 anyway
],
flexbox: 'no-2009'
},
'postcss-flexbugs-fixes': {}
}
};
```
- 在 package.json 文件中添加 npm scripts
```json
{
"dev:build": "cross-env NODE_ENV=development webpack-dev-server --config build/webpack.config.index.js",
"clear": "rimraf public",
"pro:build": "npm run clear && cross-env NODE_ENV=production webpack --config build/webpack.config.index.js"
}
```
#### 2.1.3 项目架构
```cmd
- client
- assets => 静态资源
- components => 项目的通用组件,包括布局组件和高阶组件等
- hoc
- config => 项目的一些配置
- pages => 页面组件
- store => 状态管理
- user => 模块
- action-creator.js => 模块的 actio
- action-type.js => 模块的 action 类型
- index.js => 集中输出
- reducer.js => 同步修改 state
- state.js => 模块的 state
- index.js
- styles => 项目通用的样式,以及全局的样式兼容性设置
- utils => 工具库
- App.jsx
- App.less
- index.html
- index.js
- Router.jsx
```
#### 2.1.4 业务开发
- 安装相关 npm package:
```
没有合适的资源?快使用搜索试试~ 我知道了~
毕设 基于NodeJS实现的招聘网站.zip
共112个文件
js:38个
png:24个
less:18个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 43 浏览量
2023-10-24
11:55:21
上传
评论
收藏 252KB ZIP 举报
温馨提示
matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行! matlab算法,毕设、课设程序,全部源码均已进行严格测试,可以直接运行!
资源推荐
资源详情
资源评论
收起资源包目录
毕设 基于NodeJS实现的招聘网站.zip (112个子文件)
.babelrc 380B
.editorconfig 146B
error.ejs 337B
.eslintrc 662B
.eslintrc 104B
.gitignore 926B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
.gitkeep 0B
index.html 808B
favicon.ico 4KB
404.jpg 30KB
default-avatar.jpg 15KB
http.js 5KB
user.js 3KB
app.js 2KB
error.js 2KB
action-creator.js 2KB
webpack.config.client.js 2KB
index.js 2KB
jwtAuth.js 2KB
user.js 2KB
www.js 1KB
image.js 1KB
index.js 977B
user.js 849B
schema.js 783B
reducer.js 753B
index.js 717B
webpack.config.index.js 713B
controller.js 693B
index.js 610B
schema.js 593B
restify.js 522B
index.js 383B
postcss.config.js 353B
index.js 294B
action-type.js 284B
state.js 218B
index.js 160B
api.js 149B
plugin.js 130B
index.js 117B
router.js 82B
index.js 80B
index.js 72B
index.js 65B
index.js 44B
index.js 39B
index.js 37B
index.js 0B
package-lock.json 462KB
package.json 3KB
nodemon.json 261B
index.jsx 3KB
index.jsx 3KB
index.jsx 3KB
index.jsx 2KB
index.jsx 2KB
index.jsx 2KB
index.jsx 1KB
index.jsx 1KB
AuthRoute.jsx 1KB
App.jsx 968B
index.jsx 356B
index.jsx 295B
index.jsx 235B
base.less 3KB
index.less 2KB
index.less 1KB
iconfont.less 776B
index.less 600B
index.less 294B
index.less 255B
index.less 234B
index.less 218B
index.less 136B
index.less 88B
index.less 79B
layout.less 74B
index.less 60B
index.less 0B
index.less 0B
index.less 0B
index.less 0B
README.md 12KB
ss.md 37B
logo.png 7KB
boss.png 2KB
mine.png 2KB
boss-active.png 2KB
mine-active.png 2KB
lemur.png 2KB
bull.png 2KB
zebra.png 1KB
hedgehog.png 1KB
woman.png 1KB
tiger.png 1KB
msg.png 1KB
共 112 条
- 1
- 2
资源评论
天天501
- 粉丝: 624
- 资源: 5906
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功