在Laravel中使用Vue.js(上)
前言
Laravel
是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。官方宣传语:The PHP Framework For Web Artisans
- 为web艺术家创建的框架
Vue.js
是数据驱动的组件,为现代化的 Web 界面而生
本文主要说明如何在Laravel
中使用Vue.js
,包括Vue
的环境布署、Vue
的开发过程、Vue
的使用demo
本文需要对
Laravel
及Vue.js
有基本的了解
本文用到的知识点:nvm
、npm
、Browserify
、gulp
、es6的Promise
、CDN
等
环境布署
Laravel
的布署这里不再详细说明,可以去这里下载离线包,或自行查找安装相关资料。
npm
首先,需安装好npm
环境。而npm
有多个版本,有些库只支持旧版本的,为了在机器上能方便地切换不同版本的npm
,建议使用nvm
(全称:Node Version Manager
)来管理。nvm
的安装方法,请参考官方文档 。
以下是常用命令:
1 | # 查看当前支持什么版本 |
另外,有时npm
在国内比较慢,建议使用淘宝的cnpm源替代。
(注意,如果本机安装了多个版本的npm
,如5.0
、4.0
两个,则需要在各自的版本中分别安装cnpm
才行)
注意:本文统一使用
cnpm
代替npm
,如果你没安装cnpm
,请将接下来的命令换为npm
如果执行
node -v
有问题,通过nvm ls
发现指向了 system,需要重装一下
brew uninstall node –ignore-dependencies
再通过 nvm use 已装版本或是重装一个,之后重启终端即可
Laravel相关依赖
首先我们需要安装Laravel
相关前端开发环境,默认package.json
文件如下:
1 | { |
其中laravel-elixir
可以让我们方便地使用gulp
等功能。这个东西会安装很多其他依赖,不过我们需要做的只是一条命令。
让我们在项目根目录下,执行以下命令即可:
1 | cnpm install |
Vue相关依赖
Vue
官方推荐webpack + vue-loarder
或者Browserify + vueify
来使用,具体区别这里不再说明,请自行查找区别。
由于Laravel
自带Browserify
,所以这里我们使用:Browserify + vueify
让我们安装Vue
相关依赖:
1 | cnpm i vue vueify babel-plugin-transform-runtime vue-hot-reload-api --save-dev |
package.json
将会变成以下这样:
1 | { |
为了让laravel-elixir
自带的browserify
能够解析Vue
,在package.json
中增加browserify
配置:
1 | { |
编码
环境弄好后,接下来可以进入代码开发了。
在./resources/assets/js
下面增加2个文件夹:
1 | 1. entries:存放`外部js入口文件` |
其中entries
目录下的js
文件内容,只是创建Vue实例
,具体内容见下面示例代码。
首先,让我们修改./gulpfile.js
文件,增加Browserify
相关配置,以将./resources/assets/js/hello.js
转为普通的js
文件供浏览器调用:
1 | elixir(function(mix) { |
然后使用终端在项目根目录下,运行gulp
监听文件修改:
1 | gulp watch |
接下来,让我们在Laravel
弄一个页面来进行实际测试:
1、修改./app/Http/routes.php
,修改根路由的view:
1 | Route::get('/', function () { |
2、修改./resources/views/index.blade.php
模版文件:
内容如下:
1 | <!DOCTYPE html> |
3、接着,编辑./resources/assets/js/entries/hello.js
文件,内容如下:
简单地,写入以下内容即可:
1 | import Vue from 'vue'; |
但是Vue.js
是以某个Dom
为根,所以最好是等所有Dom
都加载完毕再来初始化,这里我们可以使用ES6
的Promise
来异步判断:
1 | import Vue from 'vue'; |
4、最后,让我们编辑./resources/assets/js/views/Hello.vue
文件,内容如下:
1 | <template> |
接下来就可以去浏览器,看下具体效果。
CDN
查看gulpfile.js
里的转换语句:
1 | mix.browserify('entries/hello.js', 'public/js/hello.js'); |
我们将之存放在public/js/hello.js
这个地方,查看该文件(未压缩),会发现该文件有200多k
,这显然是非常严重的一个问题。
我们可以使用CDN
来解决这个问题,方法如下:
首先,安装browserify-shim
这个依赖:
1 | cnpm install browserify-shim --save-dev |
接着修改package.json
文件,在browserify
里增加browserify-shim
相关配置:
1 | "browserify": { |
最后,修改./resources/views/index.blade.php
模版文件,引进hello.js
前,将vue.js
的CDN
引进即可:
1 | ... |
最最后,让我们重新gulp watch
一下,会看到./public/js/hello.js
文件变为几k
了。
注意:请在
Chrome
等现代化浏览器下访问
总结
以上是在Laravel
中使用Vue.js
的简单说明,包括了环境的搭建,具体编码的说明,一个简单的demo,相信是比较容易理解的。在下一篇文章,将会演示如何使用Vue.js
进行稍微深入一点的用法:一个多标签切换显示的小功能。
以上文章参考自我最敬爱和佩服的大楷哥的文章
2016-06-29 20:56
Aevit
华师西门85℃
Author: Arvit
Link: https://arvit.xyz/2016/06/29/vue-in-laravel-1/
License: 知识共享署名-非商业性使用 4.0 国际许可协议