1. 十次方中的前端知識點隨記 好久沒上傳筆記了,主要最近的筆記都零零散散,知識點也不集中,就不傳了;最近項目想用到前後端分離,而且前端我也想參與下,就先基本的學一遍,記點零星的筆記,各位能從中看到有用的東西最好 1.1. Node.js 1.1.1. node基本使用 1. 查看 中文文檔地址 v ...
1. 十次方中的前端知識點隨記
好久沒上傳筆記了,主要最近的筆記都零零散散,知識點也不集中,就不傳了;最近項目想用到前後端分離,而且前端我也想參與下,就先基本的學一遍,記點零星的筆記,各位能從中看到有用的東西最好
1.1. Node.js
1.1.1. node基本使用
- 查看
nodejs.cn
中文文檔地址
var http = require("http")引入模塊
http.createServer(function(request,response){
response.writeHead(200,{'Content-Type':'text/plain'});
resposne.end('Hello world!');
}).listen(8888);
cmd運行`node demo4`
製作模塊
exports.add=function(x,y){
return x+y;
}
1.1.2. NPM命令
- node package manager 用來node包管理工具
npm init
初始化工程,生成package.json,相當於maven中pomnpm install express
安裝模塊express
npm root -g
顯示全局目錄npm install jquery -g
,全局安裝- 只有
package.json
時,需要npm install
下載對應的node_modules
- 安裝淘寶鏡像
npm install -g cnpm --registry=https://registry.npm.taobao.org
- 通過
cnpm -v
查看版本 - 使用cnpm下載js庫,
cnpm install
需要下載的js庫 - 運行
npm run dev
- 編譯工程
npm run build
1.1.3. webpack
- 打包工具
cnpm install webpack -g
全局安裝cnpm install webpack-cli -g
命令包webpack -v
查看是否安裝完畢,安裝版本- 打包命令
webpack
- CSS打包,需要先安裝
cnpm install style-loader css-loader --save-dev
1.2. 開發工具VsCode
- 安裝插件的方式支持不同語言
- 安裝地址
https://code.visualstudio.com
- 常用插件
vetur
,HTML Snippets
,HTML CSS Support
,Debugger for Chrome
,VueHelper
1.3. ES6
- ECMAScript是由ECMA制定的規範
var
是全局的,let
作用域局部的- 常量聲明
const
,常量不可變 - 模板字元串
let name = "bac";console.log('hello, ${name}')
- 函數預設參數
function action(num = 200){
console.log(num)
}
action();
action(100);
- 箭頭函數
function add(a,b){
return a+b;
}
console.log(add(100,200));
//ES6
add = (a,b) => {
return a+b;
}
add = (a,b) => a+b;
- 對象初始化簡寫
// ES5
function people(name ,age){
return {
name:name,
age: age
}
}
//ES6
function people(name, age){
return {
name,
age
}
}
- 解構
//ES5
const people= {
return {
name:name,
age: age
}
}
const name = people.name;
const age = people.age;
//ES6
const {name ,age} = people;
console.log(name);
console.log(age);
- Spread Operator 追加數組,對象...
const color = ['red','green'];
const colorful =[...color,'pink'];
const people = {name:'xyx',age:20};
const peopleful = {...people,address:'aaaa'}
- import和export導入導出
let fn0=function(){
console.log('fne...');
}
export {fn0}
//從某個js文件中導入某個模塊
import {fn0} from './lib'
node8 不支持import,可以用require,不用import,或者用babel
的命令行工具來執行
- Promise非同步編程的一種解決方案
1.2. ElementUI
- 餓了嗎開源的前端架構,基於vue.js
- 腳手架推薦:vueAdmin-template-master
cnpm install
,npm run dev
1.3. EasyMock
- 模擬請求數據,在後端沒完成前,模擬數據
1.4. NUXT
- 服務端渲染框架,基於vue.js
1.5. 整理一個vueAdmin-template-master的架構
build
構建目錄,構建的相關配置config
配置目錄,需要修改config/dev.env.js
中的mock路徑,此處測試可以用easyMock,生產則改config/prod.env.js
node_modules
通過cnpm install
安裝的依賴,不用自己寫src
主要的編寫目錄src/api
編寫請求介面的封裝src/assets
靜態資源管理src/router
路由信息src/store
存儲全局信息方法src/styles
樣式信息src/utils
工具方法src/views
視圖信息,需要著重修改的地方src/App.vue
全局視圖基本框架src/main.js
主入口,實例化Vue
package.json
打包文件,一般不用修改
1.6. 路由配置
- 在模板代碼
template
中,<router-view/>
用來表明需要路由的標簽區域 <router-link to="/" >首頁</router-link>
表示路由連接地址,連接到另一個模板- 路由連接到模板的配置
import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
import List from '@/components/list'
import Item from '@/components/item'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/',
name: 'HelloWorld',
component: HelloWorld
},
{
path: '/list',
name: 'List',
component: List
},
{
path: '/item/:id',
name: 'Item',
component: Item
}
]
})
1.7. vuex安裝使用
- 安裝
# 創建一個基於 webpack 模板的新項目
vue init webpack vuexdemo
# 安裝依賴,走你
cd vuexdemo
cnpm install --save vuex
npm run dev
- store創建
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
const store = new Vuex.Store({
state: {
count: 0
}
})
export default store
- store納入vue
import Vue from 'vue'
import App from './App'
import router from './router'
import store from './store'
Vue.config.productionTip = false
new Vue({
el: '#app',
router,
store,
components: { App },
template: '<App/>'
})
- count的值不能直接修改,需要通過commit(mutation)
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state){
state.count++
}
}
})
this.$store.commit('increment')
1.7.1. 提交荷載
- 需要加額外參數,則
mutations: {
increment (state,x) {
state.count += x
}
}
this.$store.commit('increment',10)
1.7.2. Action
- 提交的是
mutation
,可以包含任意非同步操作 - action的提交是用如下
mutations: {
increment(state,x){
state.count+=x
}
},
actions: {
increment(context,x){
context.commit('increment',x)
}
}
this.$store.dispatch('increment')
所以
key | 方法 |
---|---|
mutations | $store.commit('increment') |
actions | $store.dispatch('increment') |
1.7.3. 派生屬性Getter
- 調用
{{$store.getters.remark}}
- 配置
getters: {
remark(s){
if(s.count<50){
return '加油'
}else if(s.count<100){
return '你真棒'
}else{
return '你是大神'
}
}
}
1.8. 額外備註
- 三點運算符
...
,比如item是一個對象,下列表示item中加了個屬性count
{
...item,
count:0
}