摘要:一步一步搭建應(yīng)用項目初始化一步一步構(gòu)建一個應(yīng)用開篇地址前端初始化目錄結(jié)構(gòu)。。。。。。
一步一步搭建react應(yīng)用-項目初始化
[一步一步構(gòu)建一個react應(yīng)用-開篇](https://segmentfault.com/a/11...
git地址
前端初始化 # 目錄結(jié)構(gòu)+----/build + +----/config + +----+/public fe- + +--+/less +----/scripts +----/common-+--+/svg + | +--index.less +----+/src+-----+ | | +--+nav.jsx +----/component-+--+route.jsx | +--+header.jsx | +--+user.jsx | +。。。。。。 | +----+/util---Utils.js | +-----+app.js | +-----+index.js
腳手架
create-react-app fe
npm run eject 配置文件導(dǎo)出到項目目錄下
配置后端代理地址
package.json中加入 "proxy": "http://XXXXXXX"
引入antd-mobile
具體webpack中的修改和如何自定義主題來覆蓋默認(rèn)樣式參見:
antd 在在 create-react-app 中使用
路由規(guī)劃
src/component/route.jsx
項目主要有 頭部、底部導(dǎo)航、首頁、詳情頁、我的幾個部分
+-----------------------+ | +------------------+ | | | Header | | | +------------------+ | | | | +-----------------+ | | | | | | | | | | | Content | | | | | | | | | | | | | | | +-----------------+ | | +------------------+ | | | Nav | | | +------------------+ | +-----------------------+
主要代碼
import React from "react"; import { BrowserRouter as Router, Route, Redirect } from "react-router-dom" import Header from "./header" import Nav from "./nav" import Home from "./home/homePage" import Detail from "./detail" import User from "./user" import Reptile from "./reptile" import Collect from "./collectList" import Util from "../util/Util" export default class Rout extends React.Component { constructor(props) { super(props) this.state = { login: false } } componentDidMount() { Util.fetch("/api/user/checkLogin").then(res => { this.setState({ login: !res.code }) }) } render() { return () } } }> { return }}> { return }}> { return })}>
如何實現(xiàn)全局的ajax請求時loading狀態(tài)
每次有ajax請求時我們要顯示正在請求的loading狀態(tài),這里我們封裝一下fetch
主要代碼:src/util/Util.js
import "whatwg-fetch" const Loading = { pendingRequest: 0 } const Util = { open(fn) { Loading.open = fn }, close(fn) { Loading.close = fn }, fetch(url, options) { Loading.open() Loading.pendingRequest++ options = fillTokenToHeader(options) return fetch(url, options).then(res => { Loading.pendingRequest-- if (Loading.pendingRequest <= 0) { Loading.close() } return res.json() }).then(data => { if (url !== "/api/user/checkLogin") { if (data.code) { Toast.info(data.name || data.message, 1) } } return data }) } } export default Util
在最外層的App組件中,定義一個isLoading狀態(tài),控制loading活動指示器的顯示隱藏。
并將控制isLoading的兩個方法傳遞到Util中,在具體的請求發(fā)生時調(diào)用
具體代碼如下: src/app.js
import React, { Component } from "react" import Router from "./component/route.jsx" import { ActivityIndicator } from "antd-mobile" import Util from "./util/Util" import initReactFastclick from "react-fastclick"; initReactFastclick(); export default class App extends Component { constructor(props) { super(props) this.state = { isLoading: false } Util.open(() => { if(this.state.isLoading){ return } this.setState({ isLoading: true }) }) Util.close(() => { this.setState({ isLoading: false }) }) } render() { return后端初始化} }
后端基于express框架,使用MongoDB數(shù)據(jù)庫,用戶身份認(rèn)證基于token,并且使用mocha+supertest來對接口進(jìn)行單元測試
express-generator初始化項目
npm install express-generator -g express -e be node ./bin/www 瀏覽器訪問localhost:3000 能看到東西就可以了
引入pm2
pm2 是一個強(qiáng)大的node進(jìn)程管理工具
npm install -g pm2
在項目根目錄下新建文件ecosystem.config.js
module.exports = { apps: [ //數(shù)組,可以指定多個服務(wù) { name: "movies-be", script: "bin/www", watch: true, env: { PORT: 9000, //node服務(wù)端口 NODE_ENV: "development" }, env_production: { PORT:9000, NODE_ENV: "production" } } ] };
package.json中
"scripts": { "start": "pm2 start ecosystem.config.js" }
啟動
npm start 就可以啟動我們的node服務(wù)
開發(fā)中常用的pm2 命令
pm2 list 可以查看node服務(wù)列表
pm2 logs 查看日志,console打印信息等
pm2 kill 關(guān)閉服務(wù)
之后文章中會介紹如何通過pm2來部署node應(yīng)用到服務(wù)器
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/19093.html
摘要:一步一步搭建應(yīng)用項目初始化一步一步構(gòu)建一個應(yīng)用開篇地址前端初始化目錄結(jié)構(gòu)。。。。。。 一步一步搭建react應(yīng)用-項目初始化 [一步一步構(gòu)建一個react應(yīng)用-開篇](https://segmentfault.com/a/11... git地址 前端初始化 # 目錄結(jié)構(gòu) +----/build + +----/config + +----+/pu...
摘要:線上地址主要從下面幾點入手一步一步搭建應(yīng)用前后端初始化爬取豆瓣電影的電影信息開啟身份認(rèn)證使用來做基于的用戶身份認(rèn)證中使用來寫單元測試部署技術(shù)棧沒用之后改運行代碼到本地項目地址喜歡就一下吧前端后端需要安裝本項目端口并開啟權(quán)限認(rèn)證。 介紹 斷斷續(xù)續(xù)利用周末時間做了兩個月,基于react和express的一個小項目差不多做完了。所以想寫一系列文章來總結(jié)一下前后端用到技術(shù)及遇到的問題和解決方法...
摘要:線上地址主要從下面幾點入手一步一步搭建應(yīng)用前后端初始化爬取豆瓣電影的電影信息開啟身份認(rèn)證使用來做基于的用戶身份認(rèn)證中使用來寫單元測試部署技術(shù)棧沒用之后改運行代碼到本地項目地址喜歡就一下吧前端后端需要安裝本項目端口并開啟權(quán)限認(rèn)證。 介紹 斷斷續(xù)續(xù)利用周末時間做了兩個月,基于react和express的一個小項目差不多做完了。所以想寫一系列文章來總結(jié)一下前后端用到技術(shù)及遇到的問題和解決方法...
摘要:前端前端構(gòu)建后的目錄下的文件可以寫個腳本到服務(wù)器,但這里借用一下的部署功能來部署前端代碼。 線上地址 git地址 一步一步構(gòu)建一個react應(yīng)用-開篇 推薦瀏覽器開發(fā)者工具開啟手機(jī)設(shè)備模式 裝環(huán)境 前提:買個ESC、彈性公網(wǎng)ip、域名 設(shè)置服務(wù)器免密登錄 本地應(yīng)該都有.ssh目錄,并且生成了公私鑰,將本地id_rsa,id_rsa.pub scp到服務(wù)器 /.ssh目錄 之所以把私鑰也...
摘要:前端前端構(gòu)建后的目錄下的文件可以寫個腳本到服務(wù)器,但這里借用一下的部署功能來部署前端代碼。 線上地址 git地址 一步一步構(gòu)建一個react應(yīng)用-開篇 推薦瀏覽器開發(fā)者工具開啟手機(jī)設(shè)備模式 裝環(huán)境 前提:買個ESC、彈性公網(wǎng)ip、域名 設(shè)置服務(wù)器免密登錄 本地應(yīng)該都有.ssh目錄,并且生成了公私鑰,將本地id_rsa,id_rsa.pub scp到服務(wù)器 /.ssh目錄 之所以把私鑰也...
閱讀 2675·2021-11-11 16:55
閱讀 719·2021-09-04 16:40
閱讀 3109·2019-08-30 15:54
閱讀 2649·2019-08-30 15:54
閱讀 2444·2019-08-30 15:46
閱讀 431·2019-08-30 15:43
閱讀 3252·2019-08-30 11:11
閱讀 3007·2019-08-28 18:17