(給達達前端加星標,提高前端技能)css
不用怕html
https://v.qq.com/x/cover/mzc0...前端
內容有點多,也請你靜下來,慢閱讀,從此多多關照。vue
Vue框架基礎知識node
mvx模式介紹,x這裏表明是未知數的意思,那麼有多少mvx模式要咱們瞭解的呢?mvc模式,mvvm模式,相互之間的區別。python
讓咱們說一說mvc模式,這模式很常見,mvc模式,mvc模式是移動最普遍的軟件架構之一,把應用程序分爲三部分,分別爲模型,Model,視圖view,以及控制器controller。webpack
如今的咱們常說的是Mvvm模式,這也是面試官會問,什麼是Mvvm模式的呢,mvvm模式是把mvc模式的controller改爲viewmodel。ios
view的變化會自動更新viewmodel,viewmodel的變化也會自動同步到view上顯示。git
web前端開發階段,原生代碼開發階段,使用HTML,css,JavaScript代碼進行前端開發,學習web原生的優勢,就是學習成本低,容易上手,很差的就是代碼結構混亂,代碼冗餘,瀏覽器兼容性不成熟,不利於分工合做。github
代碼庫開發的階段,就是使用成熟的開源擴展庫進行前端的開發,優勢就是開發快速,瀏覽器兼容性良好,缺點就是視圖層和數據層混合在一塊兒,不利於團隊分工合做。
框架開發階段,採用前端mvc模式或者是Mvvm模式開發,優勢就是代碼分層,便於團隊合做,便於後續代碼維護,缺點就是學習成本高,框架更新迭代快。
vue框架的學習,vue是一套構建用戶界面的漸進式框架,vue只關注圖層,採用自底向上增量開發的設計。
模板
主要內容
Vue基礎知識
Vue框架基礎語法、Vue開發工具
Vue組件
Vue組件、Vue模塊化開發
Vue工程化開發
npm/yarn和webpack開發工具、Vue-cli開發工具、單文件工具
Node.js基礎和Axios網絡請求
Node.js構建Web服務器、Axios發送ajax請求、postman網絡調試工具
Vue-Router路由
單頁面應用SPA、Vue-Router實現路由機制
Vuex狀態管理
Vuex狀態管理、本地存儲
Vue-UI庫
Vue中的UI庫
三大框架的對比
Angular
React
Vue
發佈時間
2009年
2013年
2014年
維護者
谷歌
尤雨溪
視圖引擎
HTML
JSX
HTML
學習曲線
陡峭
較複雜
簡單
大小
500K+
130K+
50K+
功能複雜度
完善
完善
簡單
文檔
英文
英文
中文
應用場景
大型複雜應用
中大型應用、移動跨平臺開發
中小型輕量級應用
如何使用咱們的vue.js框架
安裝,在vue.js的官網上下載vue.min.js並用script標籤引入,cdn方式引入vue.js文件,vue推薦使用地址。
第一個vue項目實例
實例對象
vue實例對象就是vue框架的一個核心。
配置項el,把vue實例掛載到dom元素上,而後經過id綁定到html元素;配置項data,就是數據對象,vue實例的數據,注意了,數據不要與methods中的方法重名;配置項methods,事件對象,包含事件全部觸發的函數,注意了,方法名不要與data中的數據重名了;配置項computed,計算屬性;配置項watch,表示監聽器;配置項directives,表示自定義指令。
配置項鉤子(hook)函數,hook(鉤子)函數,不一樣生命週期引起的動做,路由鉤子函數,路由組件在不一樣狀態時觸發。
components表示組件容器;配置項template,定義模板,能夠是字符串,也能夠是「#」選擇器,props配置項,用於接收父組件的數據;router配置項,路由,store配置項,vuex狀態。
屬性
說明
vm.$el
Vue 實例使用的根 DOM 元素
vm.$data
Vue的data配置項
vm.$options
用於當前 Vue 實例的初始化選項
vm.$props
當前組件接收到的 props 對象
vm.$parent
父實例(若是當前實例有的話)
vm.$root
當前組件樹的根 Vue 實例
vm.$children
當前實例的直接子組件
vm.$refs
原生DOM元素或子組件註冊引用信息
vm.$slots
用來訪問被插槽分發的內容
vm.$router
全局路由(vue-router插件)
vm.$store
vuex 狀態對象(vuex插件)
方法
說明
vm.$emit()
子組件可使用 $emit 觸發父組件的自定義事件
vm.$set()
Vue.set的別名
設置對象的屬性, 這個方法主要用於避開 Vue 不能檢測屬性被添加的限制
vm.$watch
偵聽數據變化
vm.$on()
監聽當前實例上的自定義事件。事件能夠由_vm.$emit_觸發。回調函數會接收全部傳入事件觸發函數的額外參數。
vm.$mount
可使用_vm.$mount()_ 手動掛載(Vue 實例化時沒有 el 選項)
vm.$destroy
徹底銷燬一個實例。清理它與其它實例的鏈接,解綁它的所有指令及事件監聽器。
觸發_beforeDestroy_ 和_destroyed_ 的鉤子。
屬性綁定指令
說明
v-bind
動態改變dom標籤上的屬性
v-bind :class="" 簡寫 :class=""
生命週期,vue實例從開始建立,初始化數據,編譯模板,掛載dom,渲染到更新到渲染,到卸載等一系列過程。
總結一下,四個階段,建立,掛載,更新,銷燬。
使用New Vue()來建立vue實例;接下是beforeCreate調用beforeCreate生命週期鉤子,observe data開始監控data對象數據變化,init events,vue初始化內部事件,created調用created生命週期鉤子,has"el"option?實例中是否含有"el"選項,有調用vm.$mount手動掛載一個未掛載的實例時,has "template" option?是否含有template選項。
模板語法
計算屬性
計算屬性,顧名思義就是經過其餘變量計算得來的另外一個屬性。
計算屬性具備緩存,屢次訪問計算屬性會當即返回以前的計算結果,而不是再次計算後的結果。
computed中的函數,不能傳參。
methods方法
vue對象中可使用methods屬性,用來編寫自定義函數,使用方法是methods屬性由一系列json方法對組成。
渲染
循環數組:
循環對象
數組的更新檢查
push(),pop(),shift(),unshift(),splice(),sort(),reverse()爲變異方法可觸發視圖更新。
filter(),concat(),slice()爲非變異方法,不觸發視圖更新,他們能夠返回新數組,用新數組替換舊數組,就能夠刷新視圖。
條件渲染
指令
說明
v-if
根據其後表達式的bool值進行判斷是否渲染該元素
v-else-if
_v-if_ 的「else-if 塊」,能夠連續使用
v-else
表示_v-if_ 的「else 塊」
_v-else_ 元素必須緊跟在帶_v-if_ 或者_v-else-if_ 的元素的後面,不然它將不會被識別。
事件與表單
事件處理,須要綁定事件處理函數,在Vue中綁定事件處理,直接在HTML元素上使用v-on指令綁定便可。
指令
說明
v-on:click
簡寫: @click=""click、mouseover、mouseout、mouseup、mousedown、dblclick 、contextmenu、keydown、keyup等
事件對象,事件處理過程當中會觸發event事件對象,這個event對象表明當前事件的狀態,好比事件觸發時的HTML元素是什麼,event.target來獲得觸發事件的HTML元素,能夠獲得事件的類型。
event.type獲得當前的事件類型。
屬性和方法
描述
event.type
觸發的事件類型
event.target
觸發事件的HTML元素
event.preventDefault( )
阻止事件的默認行爲
event.stopPropagation( )
阻止事件冒泡
藉助事件對象實現一個事件委託機制,從而提升咱們應用程序的一個性能,什麼是事件委託機制?事件委託機制在列表渲染過程當中,大部分都是v-for渲染過程當中,藉助event事件對象,在父元素之上綁定事件處理函數而不是在子元素之上綁定事件處理函數。
表單處理
指令
說明
v-model
雙向數據綁定支持標籤:<input> <textarea> <select>
表單事件
觸發控件
說明
focus
input框、textarea框
輸入框獲取到輸入焦點
blur
input框、textarea框
輸入框失去焦點
click
單選框、多選框
選中某一個單選項或複選框
change
下拉列表
切換下拉列表項
submit
提交按鈕
單擊提交按鈕
vue組件,組件是vue.js的功能之一,目的是爲了可重用性高,減小重複性的開發,在結構上相近或相同的代碼進行封裝,成爲一個高度可複用的部件稱爲組件。
選項
說明
模板(template)
模板聲明瞭數據和最終展示給用戶的DOM之間的映射關係。
初始數據(data)
一個組件的初始數據狀態。對於能夠複用的組件來講,一般是私有的狀態。
接受的外部參數(props)
組件之間經過參數來進行數據的傳遞和共享。參數默認是單向綁定(由下往上),但也能夠顯示聲明爲雙向綁定。
方法(methods)
對數據的改動操做通常都在組件的方法內進行。能夠經過v-on指令將用戶輸入事件和組件方法進行綁定。
生命週期鉤子函數(lifecycle hooks)
一個組件會觸發多個生命週期鉤子函數,好比created、attached、destroyed等。在這些鉤子函數中,咱們能夠封裝一些自定義的邏輯。和傳統的MVC相比,這能夠理解爲Controller的邏輯被分散到了這些鉤子函數中。
vue組件的使用,先註冊後使用,vue組件能夠在全局註冊,也能夠在局部註冊。
建立組件
註冊組件,使用組件,注意事項
注意事項模板:使用id綁定
命名:組件名不要是html標準標籤名,若是用駝峯定義,html中引用組件時,改成短橫線命名
data屬性表名vue組件可用的響應式數據,是vue實例的數據對象;vue將會遞歸data的屬性轉變爲getter/setter,讓data的屬性可以響應數據變化,對象必須是純粹的對象,瀏覽器api建立的原生對象,原型上的屬性會被忽略。
data訪問原始數據對象,Vue實例代理了data對象上全部的屬性。
props傳遞數據,父組件和子組件之間的數據通訊。
事件通訊
父組件和子組件之間的數據操做,是經過Props屬性和$emit()方法來實現的
props,聲明位置在子組件中聲明,屬性值,在組件模板中綁定。
$emit,子組件向父組件傳值,使用$emit觸發父組件方法。
注意,props屬性名若是用駝峯定義,html標籤中改成短橫線命名,$emit自定義事件不能使用駝峯,短橫線命名。
若是prop是一個對象或數組,子組件內部改變它會影響父組件的狀態。
非父子通訊
本質上經過派發事件-》監聽事件從而更改值。
組件類型
動態組件,主要是在使用過程當中,可能須要動態的切換組件的顯示內容。
多個組件主要是使用同一個掛載點。
遞歸組件,在組件內部能夠嵌套調用其餘組件,甚至能夠遞歸地調用當前自身組件。
vue工程化工具
node.js是一個讓JavaScript運行在服務端的開發平臺,它讓JavaScript成爲和PHP,python,perl,ruby等服務器端語言分庭抗禮的腳本語言。node.js是一個基於chrome JavaScript運行時創建的平臺,用於方便地搭建響應速度快,易於擴展的網絡應用,node.js使用hijack驅動,非阻塞i/o模型而得以輕量和高效,很是適合在分佈式設備上運行數據密集型的實時應用。
node.js使用module模塊去劃分不一樣的功能,以簡化應用的開發。
引入了Http類庫,而且對http類庫的引用存放在http變量中。
Node.js環境安裝
https://nodejs.org/en/download/
升級npm版本
屬性
說明
name
包名
version
包的版本號。
description
包的描述。
homepage
包的官網 url 。
author
包的做者姓名。
contributors
包的其餘貢獻者姓名。
dependencies
依賴包列表。若是依賴包沒有安裝,npm 會自動將依賴包安裝在 node_module 目錄下。
repository
包代碼存放的地方的類型,能夠是 git 或 svn,git 可在 Github 上。
main
字段指定了程序的主入口文件,require('moduleName') 就會加載這個文件。這個字段的默認值是模塊根目錄下面的 index.js。
kewords
關鍵字
命令
說明
npm help
可查看某條命令的詳細幫助,例如npm help install。
npm install <package>e -g
在本地安裝當前命令行程序,可用於發佈前的本地測試。
npm update <package> -g
使用能夠把全局安裝的對應命令行程序更新至最新版。
npm update <package>
能夠把當前node_modules子目錄裏對應模塊更新至最新版本
npm cache clear
能夠清空NPM本地緩存,用於對付使用相同版本號發佈新版本代碼的人
npm unpublish <package>@<version>
能夠撤銷發佈本身發佈過的某個版本代碼。
yarn使用
Yarn 是 Facebook, Google, Exponent 和 Tilde 開發的一款新的 JavaScript 包管理工具。
它的出現是爲了解決使用npm面臨的問題:
yarm命令
指令
說明
yarn init
初始化項目,生成package.json文件
yarn add 包名
添加依賴包,示例:yarn add [package]、yarn add [package]@[version]、yarn add [package]@[tag]
yarn
根據 package.json 安裝所有依賴包,也可使用 yarn install
yarn upgrade
升級依賴包
yarn remove
移除依賴包
Npm
Yarn
說明
npm init
yarn init
初始化某個項目
npm install/link
yarn install/link
默認的安裝依賴操做
npm install taco -save
yarn add taco
安裝某個依賴,並默認保存到package
npm uninstall taco -save
yarn remove taco
移除某個依賴項目
npm install taco –save-dev
yarn add taco –dev
安裝某個開發時依賴項目
npm updata taco -save
yarn upgrade taco
更新某個依賴項目
npm install taco --global
yarn global add taco
安裝某個全局依賴項目
npm publish/login/logout
yarn publish/login/logout
發佈、登陸、登出,一系列NPM Registry操做
npm run test
yarn run test
運行某個命令,能夠在script腳本中去配置
vue cli是一個基於vue.jsf進行快速開發的完整系統。
文件
說明
build
項目構建(webpack)相關代碼
config
配置目錄,包括端口號等。咱們初學可使用默認的。
node_modules
npm 加載的項目依賴模塊
src
這裏是咱們要開發的目錄,基本上要作的事情都在這個目錄裏。裏面包含了幾個目錄及文件: ² assets: 放置一些圖片,如logo等 ² components: 目錄裏面放了一個組件文件,能夠不用 ² App.vue: 項目入口文件,咱們也能夠直接將組件寫這裏,而不使用 components 目錄 ² main.js: 項目的核心文件
test
初始測試目錄,可刪除
static
靜態資源目錄,如圖片、字體等。
index.html
首頁入口文件,你能夠添加一些 meta 信息或統計代碼啥的
package.json
項目配置文件。
README.md
項目的說明文檔,markdown 格式
vue項目配置
配置項
數據類型
說明
默認值
publicPath
string
基本路徑
'/'
outputDir
string
輸出文件目錄
'dist'
assetsDir
string
靜態資源存放目錄
' '
indexPath
string
輸出路徑
'index.html'
filenameHashing
Boolean
生成的靜態資源在它們的文件名中包含了hash 以便更好的控制緩存
true
pages
Object
在 multi-page 模式下構建應用。每一個「page」應該有一個對應的 JavaScript 入口文件。
undefined
lintOnSave
Boolean
是否在開發環境下經過 eslint-loader 在每次保存時 lint 代碼。
true
runtimeCompiler
Boolean
是否使用包含運行時編譯器的 Vue 構建版本
false
transpileDependencies
Boolean
是否生成source map文件,能夠將其設置爲 false 以加速生產環境構建。
true
crossorigin
String
設置生成的 HTML 中<link rel="stylesheet">和<script> 標籤的 crossorigin 屬性(跨域)。
undefined
integrity
Boolean
在生成的 HTML 中的 <link rel="stylesheet"> 和 <script> 標籤上啓用 Subresource Integrity(SRI:摘要簽名機制,來保證外鏈資源的完整性)。
flase
configureWebpack
Object/function
Object:經過 webpack-merge合併到最終的配置中
function:接收被解析的配置做爲參數
chainWebpack
Function
用來表示是一個函數,會接收一個基於<br/>webpack-chain 的 ChainableConfig 實例。容許對內部的 webpack 配置進行更細粒度的修改。
css.modules
Boolean
默認狀況下,只有_.module.[ext] 結尾的文件纔會被視做 CSS Modules 模塊。設置爲true後你就能夠去掉文件名中的.module並將全部\_.(css|scss|less|styel(us)?)文件視爲CSS Modules文件。
false
css.extract
Boolean/Object
用來設置是否將組件中的 CSS 提取至一個獨立的 CSS 文件中 (而不是動態注入到 JavaScript 中的 inline 代碼)。
生產環境:true
開發環境:fals。
css.sourceMap
Boolean
是否爲 CSS 開啓 source map。
false
css.loaderOptios
Object
用來向 CSS 相關的 loader 傳遞選項
{}
devServer
Object
全部 webpack-dev-server 的選項都支持
devServer.proxy
String/Object
前端應用和後端 API 服務器沒有運行在同一個主機上,須要在開發環境下將 API 請求代理到 API 服務器。
proxy: ''
parallel
Boolean
是否爲Babel或 TypeScript 使用 thread-loader。該選項在系統的 CPU 有多於一個內核時自動啓用,僅用於生產構建。
require('os').cpus().length > 1
pluginOptions
Object
用來傳遞任何第三方插件選項。
js模塊
express服務器開發
Node.js是運行在服務器端的JavaScript。
第一個node應用程序
express
body-parser,node.js中間件,用於處理json,raw,text和url編碼的數據。cookie-parser是一個解析cookie的工具,經過req.cookies能夠取到傳過來的cookie,並把它們轉成對象。multer,node.js中間件,用於處理表單數據。
屬性
說明
req.app
callback爲外部文件時,用req.app訪問Express的實例
req.baseUrl
獲取路由當前安裝的URL路徑
req.body / req.cookies
得到「請求主體」/ Cookies
req.fresh / req.stale
判斷請求是否還「新鮮」
req.hostname / req.ip
獲取主機名和IP地址
req.originalUrl
獲取原始請求URL
req.params
獲取路由的parameters
req.path
獲取請求路徑
req.protocol
獲取協議類型
req.query
獲取URL的查詢參數串
req.route
獲取當前匹配的路由
req.subdomains
獲取子域名
req.accepts()
檢查可接受的請求的文檔類型
req.acceptsCharsets / req.acceptsEncodings / req.acceptsLanguages
返回指定字符集的第一個可接受字符編碼
req.get()
獲取指定的HTTP請求頭
req.is()
判斷請求頭Content-Type的MIME類型
屬性
說明
res.app
同req.app同樣
res.append()
追加指定HTTP頭
res.set()
在res.append()後將重置以前設置的頭
res.cookie(name,value [,option])
設置Cookie
opition
domain / expires / httpOnly / maxAge / path / secure / signed
res.clearCookie()
清除Cookie
res.download()
傳送指定路徑的文件
res.get()
返回指定的HTTP頭
res.json()
傳送JSON響應
res.jsonp()
傳送JSONP響應
res.location()
只設置響應的Location HTTP頭,不設置狀態碼 或者close response
res.redirect()
設置響應的Location HTTP頭,而且設置狀態碼302
res.render(view,[locals],callback)
渲染一個view,同時向callback傳遞渲染後的字符串,若是在渲染過程當中有錯誤發生next(err)將會被自動調用。callback將會被傳入一個可能發生的錯誤以及渲染後的頁面,這樣就不會自動輸出了。
res.send()
傳送HTTP響應
res.sendFile(path [,options] [,fn])
傳送指定路徑的文件 -會自動根據文件extension設定Content-Type
res.status()
設置HTTP狀態碼
res.type()
設置Content-Type的MIME類型
express路由
請求方法
說明
GET
請求一個指定資源的表示形式. 使用GET的請求應該只被用於獲取數據.
HEAD
請求一個與GET請求的響應相同的響應,但沒有響應體.
POST
用於將實體提交到指定的資源,一般致使狀態或服務器上的反作用的更改.
PUT
用請求有效載荷替換目標資源的全部當前表示。
DELETE
刪除指定的資源。
CONNECT
創建一個到由目標資源標識的服務器的隧道。
OPTIONS
用於描述目標資源的通訊選項。
TRACE
沿着到目標資源的路徑執行一個消息環回測試。
PATCH
用於對資源應用部分修改。
pug視圖模板
Cookie
Session
Cookie是把用戶的數據寫給用戶的瀏覽器,在瀏覽器端保存狀態數據,每次訪問服務器時,在HTTP請求消息中傳輸狀態數據。缺點是:數據量太大,HTTP消息傳輸負擔較大;用戶可能會修改cookie信息,致使服務器不安全。
Session技術把用戶的數據寫到用戶獨佔的session中,不一樣用戶經過不一樣的sessionid 辨別。
1.把 sessionid 保存在 客戶端cookie或本地存儲中。
2.瀏覽器發送HTTP請求時,附帶 sessionid 的cookie信息,以便服務器端區分是哪個用戶。 Session技術把用戶的數據寫到用戶獨佔的session中,不一樣用戶經過不一樣的sessionid 辨別。
參數
做用
Secret
一個String類型的字符串,做爲服務器端建立session的簽名
Name
返回客戶端key的名稱,默認爲connect.sid,也能夠本身設置
Resave
強制保存session,即便它沒有變化。默認爲true。建議設置成false。
SaveUninitialized
強制將未初始化的session存儲。當新建了一個session且未設定屬性或值時,它就處於未初始化狀態。在設定一個cookie前,這對於登陸驗證,減輕服務的存儲壓力,極限控制是有幫助的(默認爲true)。建議手動添加。
Cookie
設置返回到前端key的屬性,默認值爲{path: '/', httpOnly: true, secure: false, maxAge: null}。
Rolling
在每次請求時強行設置cookie,這將重置cookie過時時間,默認是false。
目錄/文件
說明
build
項目構建(webpack)相關代碼
config
配置目錄,包括端口號等。咱們初學可使用默認的。
node_modules
npm 加載的項目依賴模塊
src
這裏是咱們要開發的目錄,基本上要作的事情都在這個目錄裏。裏面包含了幾個目錄及文件: 1.sets: 放置一些圖片,如logo等。 2.mponents: 目錄裏面放了一個組件文件,能夠不用。 3.p.vue: 項目入口文件,咱們也能夠直接將組件寫這裏,而不使用 components 目錄。 4.in.js: 項目的核心文件。
static
靜態資源目錄,如圖片、字體等。
test
初始測試目錄,可刪除
.xxxx文件
這些是一些配置文件,包括語法配置,git配置等。
index.html
首頁入口文件,你能夠添加一些 meta 信息或統計代碼啥的。
package.json
項目配置文件。
README.md
項目的說明文檔,markdown 格式。
指令
說明
nodemon -h或者 nodemon --help
使用幫助
nodemon -e
默認的 nodemon監視 .js, .mjs, .coffee, litcoffee和Json文件,經過-e命令你能夠指定你本身的查找列表
nodemon --watch path
nodemon默認只會監視當前的工做路徑,若是你想去監視其餘路徑上的文件,你可使用以下命令: nodemon --watch app --watch libs app/server.js
nodemon --ignore
忽視一些文件被監視
nodemon --delay
有時候你會修改許多文件,這時爲了不沒必要要的重啓,你能夠經過命令指定多少時間後再進行重啓。 nodemon --delay 10 server.js
rs
手動重啓
nodemon ./server.js localhost 8080
指定主機和端口
nodemon --debug ./server.js 80
開啓debug模式
UI框架
開發團隊
github star數
優缺點
element ui(桌面版ui)
餓了麼團隊開源的ui庫
34K
組件豐富,可是界面樣式不太美觀。 http://element-cn.eleme.io/#/...
iView(桌面版ui)
我的團隊開源的ui庫
19K
組件豐富,界面樣式美觀,但使用 render 函數渲染,使用成本較高。 https://www.iviewui.com/docs/...
Vux(移動端ui)
基於微信ui推出的移動端ui庫
14.9K
mint-ui(移動端ui)
餓了麼團隊推出的移動端ui庫
13.2K
http://mint-ui.github.io/docs...
陪伴你的365天
從此也請你多多關照
推薦閱讀 點擊標題可跳轉
【面試Vue全家桶】vue前端交互模式-es7的語法結構?async/await
【面試須要】掌握JavaScript中的this,call,apply的原理
2019年的每一天日更只爲等待她的出現,好好過餘生,慶餘年 | 掘金年度徵文
以爲本文對你有幫助?請分享給更多人
關注「達達前端」加星標,提高前端技能
在博客平臺裏,將來的路還很長,也但願本身之後的文章你們能多多支持,多多批評指正,咱們一塊兒進步,一塊兒走花路。
很是感謝讀者能看到這裏,若是這個文章寫得還不錯,以爲「達達」我有點東西的話,以爲我可以堅持的學習,以爲此人能夠交朋友的話, 求點贊,求關注,求分享,對暖男我來講真的
很是有用!!!
感謝閱讀,原創不易,喜歡就點個[在看] or [轉發朋友圈],這是我寫做最大的動力。
意見反饋
若本號內容有作得不到位的地方(好比:涉及版權或其餘問題),請及時聯繫咱們進行整改便可,會在第一時間進行處理。
這是一個有質量,有態度的公衆號
點關注,有好運