1,什麼是node.js,以及npmcss
簡單的來講Node.js就是運行在服務端的JavaScript,是基於Chrome V8引擎的.npm是Node.js包的管理工具.vue
2,npm的安裝和更新node
Node.js下載安裝Node.js官網下載安裝.npm自帶的包管理工具.jquery
更新到npm指定版本:webpack
npm經常使用操做ios
以前咱們用jQuery或者Bootstrap用cdn或者直接手動下載並放入項目,並且要管理版本.有了npm,咱們管理本身的依賴包以及版本更加簡單web
到本身項目下,進行下列命令:ajax
咱們的項目目錄下會生成一個node_modules目錄,咱們用npm下的包會在這個目錄下.vuex
咱們全部的依賴信息放在package.json文件中,包括咱們全部的依賴以及版本vue-cli
若是咱們刪掉node_modules目錄,可使用npm i 來下載全部依賴.
3,npm經常使用配置
當咱們用npm init的時候用了參數-y, 若是不用-y咱們能夠進行一些配置,在咱們的package.json文件中有不少配置項
4,webpack3
webpack:是一個模塊打包器,他將根據模塊的依賴關係靜態分析,而後將這些模塊按照指定的規則生產成靜態資源,
4.1,安裝和配置
webpack是跑在Node.js環境下的,因此肯定有node環境
安裝方式:
4.2,entry和output
entry是入口文件,output是出口文件,咱們能夠把命令寫在webpack.config.js中
module.export = { // 全部的入口文件 entry: { home: './main.js', login: './login.js', }, // 出口文件 output: { filename: '[name].bundle.js', path: __dirname + '/dist', } } // backage.json 下的scripts scripts: { "pack": "node_moudles/.bin/webpack --watch" } // 運行命令 npm run pack
5,webpack4
webpack的新特性
5.1,webpack不在單獨使用,須要webpack-cli
5.2,增長區分模式(development, production)
5.3,固定入口目錄爲src,與入口默認文件index.js,打包後文件在新增的dist目錄下
當只有一個入口文件也就是src/index.js時,無需增長webpack.config.js
6,Vue-cli
Vue-cli是官方提供的快速構建這個單頁面應用的腳手架
6.1,目錄結構
7,Vue-cli配置jquery,bootstrap
7.1,下載安裝
7.2,修改build/webpackage.base.conf.js
const webpack = require('webpack') // 在module.exports裏添加插件 plugins: [ new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery", "windows.jQuery": "jquery", // Popper: ['popper.js', 'default'] }) ], // *******下面是若是手動下載bootstrap用的******* resolve: { extensions: ['.js', '.vue', '.json'], alias: { 'vue$': 'vue/dist/vue.esm.js', '@': resolve('src'), // 若是是手動下載的bootstrap須要添加這個配置 // 'assets': path.resolve(__dirname, '../src/assets'), // 'jquery': 'jquery/src/jquery' } },
7.3,修改主程序的就是文件
import $ from 'jquery' import 'bootstrap/dist/css/bootstrap.min.css' import 'bootstrap/dist/js/bootstrap.min.js'
8,vue-cli 3.0
8.1,下載安裝
8.2,建立項目
8.3,目錄結構及其配置文件
8.4,vue-cli3配置jquery.bootstrap
聽說和vue-cli2同樣
總之:在運行vue-cli和webpack都要運行node.js
1,先下載node.js這是一個步驟以下圖
一,在命令行輸入命令:
node.js/npm
npm
管理工做目錄 ---> npm init -y
下載包 ------>npm i xxxx@0.0.0
卸載 ------->npm uninstall xxxx
更新 ------->npm update xxxx
webpack
下載 -------->npm i webpack webpack-cli
打包默認的入口文件 ------->src目錄下的index.js
出口文件 ------->dist目錄的main.js
vue-cli 幫助開發人員快速搭建項目的腳手架工具
下載 --------->npm i vue-cli
用vue-cli幫助咱們建立項目 ------->vue init webpack xxxx
啓動項目 -------->npm run dev
9,vuex
命令行:npm i vuex
// 第一步導入vuex import vuex from "vuex" // 第二步vue使用vuex vue.use(vuex) // 第三步實例化倉庫 new vuex.Store({ state: {}, getter: {}, mutations:{} }) // 第四步實例化一個Vue對象 // 註冊倉庫 new Vue({ el:"#app". store })
// 建立一個組件 const Counter = { template: `<div>{{ count }}</div>`, computed: { count(){ return this.$store.state.count } } };
import Vue from 'vue' import Vue_x from "vuex" Vue.use(Vue_x); export default new Vue_x.Store({ state: { count: 20, }, // 經過 this.$store.getters.my_func getters: { my_func: function (state) { return state.count * 2 } }, });
import Vue from 'vue' import Vue_x from "vuex" Vue.use(Vue_x); export default new Vue_x.Store({ state: { count: 20, }, // 經過 this.$store.getters.my_func getters: { my_func: function (state) { return state.count * 2 }, // 經過 this.$store.getters.my_func_count my_func_count: function (state, getters) { return getters.my_func.length } }, });
import Vue from 'vue' import Vue_x from "vuex" Vue.use(Vue_x); export default new Vue_x.Store({ state: { count: 20, }, // 須要經過 this.$store.commit('increment', 10) mutations: { increment (state, n) { // 變動狀態 state.count += n } } });
10,axios的簡單使用
// main.js import axios from "axios" Vue.prototype.$axios = axios // 組件中 methods: { init () { this.$axios({ method: "get", url: "/user" }) }, };
test(){ this.$axios.get(this.$store.state.apiList.course,{ params: { id: 123, } }).then(function (response) { // 請求成功回調函數 }).catch(function (response) { // 請求失敗的回調函數 }) }
test(){ this.$axios.post(this.$store.state.apiList.course,{ course_title: "Python", course_price: "19.88" }).then(function (response) { // 請求成功回調函數 }).catch(function (response) { // 請求失敗的回調函數 }) }
function getCourse(){ return this.$axios.get('/course/12') } function getCourse_all() { return this.$axios.get('/course') } this.$axios.all([getCourse_all(),getCourse()]) .then().catch()
methods: { init(){ var that = this this.$axios.request({ url: that.$store.state.apiList.course, method: 'get' }).then(function (data) { if (data.status === 200){ that.courseList = data.data } }).catch(function (reason) { console.log(reason) }) } },