zoukankan      html  css  js  c++  java
  • VUE + vue-cli + webpack 创建新项目

    首先记录一下命令。

    这是一个睿智新手的笔记。

    p.s.这是配置好环境以后的命令。

    -----------------------------------------------

    $ npm install -global vue-cli    //手脚架先装好

    $ vue init webpack my-project    //创建个存放项目的目录

    $ cd my-project    //进入此目录

    $ npm install

    $ npm run dev    //运行项目

    //安装插件

    $ npm install iview --save

    $npm install vuex --save

    ...

    具体步骤参考 https://www.jianshu.com/p/f82d55df7e54

    这篇博客很详尽,感恩作者,啵啵啵啵

     基本要用的东西安装配置完后,main.js里是这样的:

     

    可以看到我们的接口调用使用axios,这里需要配置接口的域名(前缀),可以方便接口域名的更改:config下的dev.env.js

     

    然后在scr文件夹下新建api文件夹,里面新建api.js,配置url_root:

     此时main.js里的第17行就可以理解了:

     
    ps:后端也需要处理请求头以及Access-Control-Allow-Credentials为true,保证跨域资源共享

    再ps:关于axios为我们做了什么,可以参看大佬的github分享的:https://github.com/leer0911/myXHR/blob/master/doc/README.md#typescript-%E9%87%8D%E6%9E%84-axios-%E5%85%A8%E6%94%BB%E7%95%A5

     而我们在调用接口的时候就可以这么写了: ↓ 下面是login.vue:

     1 this.$refs["formInline"].validate(valid => {
     2                 if (valid) {
     3                     var data = new FormData();
     4                     data.append('username',formInline.user)
     5                     data.append('password',formInline.password)
     6                     this.$http({
     7                         method: "post",
     8                         url: this.$url_root + "/user/login",
     9                         data: data
    10                     }).then((response) => {
    11                         if(response.data.succeed){
    12                           this.$Message.success("登陆成功!");
    13                           this.user=''
    14                           this.password= ''
    15                           sessionStorage.setItem("user", formInline.user);
    16                           sessionStorage.setItem("password", formInline.password);
    17                           this.$router.push({path:'/home'});
    18                           this.$store.state.myheadright = true
    19                         }else{
    20                           this.$Message.error(response.data.message);
    21                         }
    22                     });
    23                 } else {
    24                     this.$Message.error("请输入正确的用户名和密码!");
    25                     this.user = "";
    26                     this.password = "";
    27                     this.verification_code = "";
    28                 }
    29             });

    其实一般来说登陆成功后台应该返回一个AccessToken,非常方便,但是由于这个项目是个非常粗糙的项目,所以不要指望后台来适应咱了,我忍。

    这里还涉及到了登陆与否的某些通用组建的变化,比如在登录页面没有侧边栏,在登陆之后头部要出现“注销”按钮,这里的实现使用了两种方式。

    侧边栏的隐藏和显示使用了v-if + watch。因为我们统一在APP.vue进行显示,所以在这里可以看到如何实现:

    首先APP.vue要引一下我们写好的组件:

    这里是我们的页面DOM:(可以看到class为layout的div使用了v-if进行控制)

    data里定义path,watch进行监控:

     此时就可以看到区别了:(页面毫无ui设计,蓝瘦)

     

     然后是头部“注销”的显示与隐藏,使用了vuex(至今我也只学会了这个),可以看到登陆的代码中有这一行:

    这个是我们在src中同样新建的store文件夹下的store.js配置的:

    而里面的myheadright就是我们在header组件中写好的:

     这里是写在注销方法里的控制:

     

    接下来关于登陆与否的验证,还有一条——当我们没有登陆却进了其他页面呢?此时需要立刻判断是否登录,并作出页面跳转,这里我们后台没有返回什么东西给我,我只好把账号密码存在本地,尴尬:

    当然上面这段是抄的,忘记是哪位大神的博客了,很难过,感谢他,啾咪!

  • 相关阅读:
    python基础:内置函数zip,map,filter
    python基础:网络编程
    python基础:异常捕捉
    jQuery demo
    day14 jQuery
    day13 JS Dom
    页面垂直方向出现两个滚动条问题?
    修复npm ERR! cb()never called!的错误;This is an error with npm itself. Please report this error at:
    vue——解决“You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. ” eslint报错,取消文件的rules
    原型链
  • 原文地址:https://www.cnblogs.com/nangras/p/9341266.html
Copyright © 2011-2022 走看看