星五博客

vue.js学习笔记

安装 node.js    从 nodejs.org 下载node.js的安装包,比如windows版的,安装后可以在命令行输入node -v查看版本号

node -v 查看node.js版本号
npm -v 查看npm版本号
npm install -g cnpm --registry=http://registry.npm.taobao.org 安装npm国内镜像cnpm
npm install -g vue-cli 安装vue-cli脚手架构建工具

vue init webpack demo 新建项目,demo是项目名称,除vue-router路由建议安装外,其它可以不装
cnpm install 新建的项目,需要安装所需要依赖模块,直接在项目目录下运行cnpm install安装
npm run dev 运行项目,要切换到项目根目录下
运行的相关配置在config\index.js里,比如资源目录、运行端口号等

ElementUI网站 http://element-cn.eleme.io/#/zh-CN/component/layout

npm i element-ui -S 安装element-ui,需要在项目目录下运行
安装完成后,修改项目的main.js,导入ElementUI
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
在new Vue({})前加上Vue.use(ElementUI)启用ElementUI
npm run build 编译项目,生成dist目录,把目录下的复制到服务器上就完成发布了

路由中切换页面和携带参数的方式:

<router-link :to="{name:'test', params: { userId: 123 }}">以命名跳转到test并带post参数</router-link>
<router-link :to="{path:'/test', query: { xxx: 'ooo' }}">以路径跳转到test并带get参数</router-link>
<!-- this.$router.push({ name:'router1',params: { id: status ,id2: status3},query: { queryId: status2 }});
  编程跳转写在一个函数里面,通过click等方法来触发;接收参数则用 this.$route.query.name 和
  this.$route.params.name,注意 $router 和 $route 的区别。 -->

路由中子页获取参数的方式:

传进来参数:<br>
params:{{$route.params}}<br>
query:{{$route.query}}<br>
<router-link to="/">返回HelloWorld</router-link>

事件和对应js函数的写法:

<button @click="showCon('你好啊。。。')">chrome控制台里输出内容</button>

<script>
export default {
  name: 'test',
  data () {
    return {
      msg: '这是切换页面用的测试!'
    }
  },
  mounted(){ //这个和created一样,执行一次,但这个是在网页加载完成后执行,参考生命周期示意图
    //在chrome控制台输出参数
    console.log(this.$route.params);
    console.log(this.$route.query);
  },
  methods:{ //这个主要拿来写js函数,比如ajax请求一类的
      showCon:function(str){
          if(str!=''){
            console.log(this.msg //取页面中的其它变量
              +'|'+str);
          }
      }
  }
}
</script>

注意:methods中可以带$event参数,传递鼠标点击的事件和属性,写法如showCon('你好',$event)

ajax请求示例:

<button @click="send">发送AJAX请求</button>

注意:以下函数是在methods块里面
send(){
          axios({
              method:'get',
              url:'/', //直接请求一下首页内容吧
          }).then(function(resp){
              console.log(resp.data);
          }).catch(resp => {
              console.log('请求失败:'+resp.status+','+resp.statusText);
          });
      }

跨域调用接口的解决方法:

打开 config/index.js
找到 proxyTable:{}, 改为
proxyTable: {
      '/api': {
        target: 'http://localhost:8833/www/', //设置调用接口域名和端口号别忘了加http
        changeOrigin: true,
        pathRewrite: {
            '^/api': '/'   //这里理解成用‘/api’代替target里面的地址,组件中我们调接口时直接用/api代替
                             // 比如我要调用'http://0.0:8080/user/add',直接写‘/api/user/add’即可 代理后地址栏显示/
        }
      }
    },
然后就可以在js里使用 /api/test.api 这种地址了,比如:
      test(){
          axios({
              method:'get',
              url:'/api/test.api', 
          }).then(function(resp){
              console.log(resp.data);
          }).catch(resp => {
              console.log(resp);
          });
      }

vue生命周期示意图:
最后,附非vue-cli模式的,直接引用js的另一种方式代码:
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <!-- import CSS -->
  <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
</head>
<body>
  <div id="app">
    <el-button @click="visible = true">Button</el-button>
    <el-dialog :visible.sync="visible" title="Hello world">
      <p>Try Element</p>
    </el-dialog>
  </div>
</body>
  <!-- import Vue before Element -->
  <script src="https://unpkg.com/vue/dist/vue.js"></script>
  <!-- import JavaScript -->
  <script src="https://unpkg.com/element-ui/lib/index.js"></script>
  <script>
    new Vue({
      el: '#app',
      data: function() {
        return { visible: false }
      }
    })
  </script>
</html>