vue工作中的小结

vue工作中的小结


1 npm run dev 与 npm run build

package.json 里面

"dev": "node build/dev-server.js",
"build": "node build/build.js",

npm run build的执行过程:

    检查node和npm的版本;
    引入相关插件和配置;
    创建express服务器和webpack编译器;
    配置开发中间件webpack-dev-middleware和热重载中间件webpack-hot-middleware
    挂载代理服务和中间件;
    配置静态资源;
    启动服务器监听特定端口8080;
    自动打开浏览器并打开特定网址localhost:8080;
    
    说明 express服务器提供静态文件服务不过它还使用了http-proxy-middleware一个http请求代理的中间件
    前端开发过程中需要使用到后台的API的话可以通过配置proxyTable来将相应的后台请求代理到专用的API服务器


2 $http.post().then().bind().catch().bind() 解决作用域的问题

多个回调函数都有各自独立的作用域,如果直接在里面访问 this,无法访问到 Vue 实例 这时只要添加一个 .bind(this) 就能解决这个问题


// 当请求成功时,会执行 .then,否则执行 .catch

    $http.post().then(function(res){
      console.log(res)
    })
    .catch(function(err){
      console.log(err)     
    })

// bind(this) 解决作用域的问题

    .then(function(res){
      console.log(this.data)
    }.bind(this))       


服务器端

配置cors即可

客户端

配置Axios.defaults.withCredentials = true,
Vue.http.options.xhr = { withCredentials: true } 

注意:

如果要发送Cookie,Access-Control-Allow-Origin就不能设为星号,必须指定明确的、与请求网页一致的域名。


4 vue 中 scope 和 slot-scope 作用域 插槽


// slot-scope vue2.5版本中取代了scope

    <template slot-scope="s">     //  名字 自定义
        <el-button
                size="small"
                type="primary"
                @click="handleDetails(s.$index, s.row.id)">
            查看
        </el-button>
        <el-button
                size="small"
                type="primary"
                @click="handleAddOrder(s.$index, s.row.id)">
            新增订单
        </el-button>
    </template>


5 vue 中 的 ref 与 $refs

用ref绑定之后,就不需要在获取dom节点了,直接在上面的input上绑定input1,然后$refs里面调用就行。 然后在javascript里面这样调用:this.$refs.input1 减少获取dom节点的消耗


// 事例:
    
    <el-form label-position="right"
             label-width="100px"
             :inline="false"
             :model="order_data"
             :rules="rules"
              ref="addOrder"
    >
    this.$refs['addOrder'].validate((valid)=> {


Buy me a 肥仔水!