美文网首页
VUE 动静分离的革命

VUE 动静分离的革命

作者: 蛐蛐儿阳 | 来源:发表于2020-03-05 20:26 被阅读0次

2020年三月四日,肺炎也消停了,在家里学习了docker搭建lnmp,模拟了nginx负载均衡,mysql主从配置,和VUE。今天想配合tp,学习一下VUE在项目中的具体使用方法。

tp用的最新的6.0.2 , php用的最新的7.4,mysql用的8.019 , 因为用的docker,php和mysql版本我可以随时随便换。

1,tp下来的时候没有具体报错信息,我把.exame.env配置文件打开了,然后数据库连不上,但我直接new POD却能连上,后来发现, .env 配置文件配置的数据库参数优先于database.php

2, 然后开始渲染模板,发现手册里的 view方法不能使用, 需要composer require topthink/think-view 安装才可以,详情见手册。https://www.kancloud.cn/manual/thinkphp6_0/1037613

为什么这么基础的功能还要安装呢?

有这个疑问的话,VUE就白看了。

几乎所有php框架,都有自己的模板引擎, 还有好多如php smarty的第三方模板,他的写法像这样。在php控制器里面

$this->assign('test', $a);

然后在模板里 用

{$test}

输出$a的内容,但随着app流行,我们常常给app的内容和给h5前端的内容是相同的,。可不可以h5和app共用一个接口?可不可以静态页面交给前端人员,而不用php程序员插手呢?

当然可以,VUE等类似框架诞生了。(虽然jq也能做这些事情,但jq并不是为此诞生的)

用VUE, 我们就并不需要tp自己的模板引擎, 在html页面, 不需要任何php代码的参与,php要做的是,输出json数据串,剩下的交给VUE处理。

听着简单有趣,vue能解析json数据并平铺到静态页面上,但最重要的是,vue能判断用户登录状态吗? 不急,一点点来。
vue我们已经看过一遍了,这里讲下最简单的,body里面内容。

<div id="app">
  {{ message }}
</div>

js代码

var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})

屏幕上显示的是 Hello Vue!
要想和后端交互必须用ajax, jq中的ajax已经
用烂了,vue-resource官方停止更新,最后我选择了axios。

这里涉及到一个跨域问题, php端需要添加一行代码。

header('Access-Control-Allow-Origin:*');

好的文档能事半功倍, 参考资料 :
https://cn.vuejs.org/v2/cookbook/using-axios-to-consume-apis.html
贴下代码。php代码:

        header('Access-Control-Allow-Origin:*');  //为了跨域
        return json("后台的数据?");  //输出json数据。

前端html代码:

new Vue({
  el: '#app',
  data () {
    return {
      info: null
    }
  },
  mounted () {
    axios
      .get('http://localhost/vue/hi')
      .then(response => (this.info = response.data))
  }
})

这些只是输出了一个字段,那么数组呢?
我们用php丢出数组

        header('Access-Control-Allow-Origin:*');
        $arr = [
            ['id' => 1, 'name' => '测试', 'message' => '随便的内容'],
            ['id' => 2, 'name' => '得分',  'message' => '爱迪生'],
            ['id' => 3, 'name' => '啊啊去', 'message' => '啊各位我'],
        ];
        return json($arr);

前端js代码,都学过,只不过现在的数据用ajax去接收一下。

new Vue({
  el: '#app',
  data () {
    return {
      lists: null
    }
  },
  mounted () {
    axios
      .get('http://localhost/vue/lists')
      .then(response => {
        this.lists = response.data
       // console.log(response.data);
      })
  }
})

html代码

    <div id="app">
      <li v-for="l in lists">
        {{ l.id }} - {{ l.name }} - {{ l.message }}
      </li>
    </div>

vue中循环数组有点特别, 被循环数组放后面, 打印可以去掉。
真是没有任何难度。
要注意的是js代码里面,大括号里面,代码换行时没有分号; ,加上反而会报错,需要注意一下。

我会想起了在中国体育,我们不太合格的前端,当一个界面需要多个接口时,他就不会处理了,我们接下来处理一个更复杂一些的情况。
如果后端代码不符合标准,尽量让后端去处理。
比如,我们一个mounted里面有多个axios

    axios
      .get('http://localhost/vue/lists')
      .then(response => {
        this.lists = response.data
        console.log(response.data);
      })
    axios
      .get('http://localhost/vue/lists')
      .then(response => {
        this.ttls = response.data
        console.log(response.data);
      })

其实第一二个可以用不同接口,但,正常情况下,vue是建议用多个id块去请求多个接口的。比如这样

new Vue({
  el: '#app',
  data () {
    return {
      lists: null
    }
  },
  mounted () {
    axios
      .get('http://localhost/vue/lists')
      .then(response => {
        this.lists = response.data
       // console.log(response.data);
      })
  }
})

new Vue({
  el: '#app2', //注意这里是第二个id
  data () {
    return {
      lists: null
    }
  },
  mounted () {
    axios
      .get('http://localhost/vue/lists') // 这里请求第二个接口
      .then(response => {
        this.lists = response.data // 第二个接口接收到值
      })
  }
})

然后html

        <div id="app">
            <li v-for="l in lists">
                {{ l.id }} - {{ l.name }} - {{ l.message }}
            </li>
        </div>
        <div id="app2">
            <li v-for="l in lists">
                {{ l.id }} - {{ l.name }} - {{ l.message }}
            </li>
        </div>

由于最上层的id app和app2都已经将内容分开了,所以lists是可以重名的,这才是正确姿势。

相关文章

  • VUE 动静分离的革命

    2020年三月四日,肺炎也消停了,在家里学习了docker搭建lnmp,模拟了nginx负载均衡,mysql主从配...

  • 企业级你所要懂的实战应用,Nginx动静分离实战问题详解

    知识要点: Nginx动静分离简介 正则表达式回顾 Nginx动静分离配置 Nginx动静分离简介 动静分离是指在...

  • 动静分离

    1. 动静分离的实现思路 动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应...

  • 动静分离

    1.什么是动静分离 将动态请求和静态请求区分访问 2.为什么要做动静分离 tomcat本身处理静态效率不高,还会带...

  • 动静分离

    一、动静不分离image.png 1、配置uwsgi image.png修改文件image.png 2、启动应用程...

  • Day44-Nginx集群架构:Tomcat动静分离+Rewri

    本章课程内容tomcat动静分离: 1.什么是动静分离? 2.为什么要做动静分离? 3.如何实现动静分离? 4.单...

  • 第四十四天 动静分离

    第四十四天 动静分离 1.什么是动静分离? 将动态请求和静态请求区分访问 动静分离的优点:动静分离之后,即使动态服...

  • Nginx动静分离

    https://blog.csdn.net/zsj777/article/details/80241558

  • nginx 动静分离

    //静态资源location ~ ..(js|css|htm|html|gif|jpg|jpeg|png|bmp|...

  • nginx动静分离

    1、准备环境准备一个nginx代理 两个http 分别处理动态和静态。 静态资源配置 动态资源配置:

网友评论

      本文标题:VUE 动静分离的革命

      本文链接:https://www.haomeiwen.com/subject/kudhrhtx.html