前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【玩转腾讯云】已有laravel 添加vue

【玩转腾讯云】已有laravel 添加vue

原创
作者头像
无忧366
修改2020-04-29 09:07:58
3.6K0
修改2020-04-29 09:07:58
举报
文章被收录于专栏:Hello worldHello world

package.json

代码语言:javascript
复制
"devDependencies": {
 "axios": "^0.17",
 "bootstrap-sass": "^3.3.7",
 "browser-sync": "^2.26.7",
 "browser-sync-webpack-plugin": "^2.2.2",
 "cross-env": "^5.1",
 "jquery": "^3.2",
 "laravel-elixir-livereload": "^1.1.6",
 "laravel-elixir-vue-2": "^0.3.0",
 "laravel-elixir-webpack-official": "^1.0.10",
 "laravel-mix": "^1.0",
 "lodash": "^4.17.4",
 "node-sass": "^4.7.2",
 "vue": "^2.5.7"
  },
 "dependencies": {
 "css-loader": "^0.28.9",
 "gulp": "^3.9.1",
 "iview": "^2.9.2",
 "js-cookie": "^2.2.0",
 "laravel-elixir": "^6.0.0-18",
 "laravel-elixir-compress": "^1.0.2",
 "less": "^3.0.0",
 "less-loader": "^4.0.5",
 "particles.js": "^2.0.0",
 "vue-i18n": "^7.4.2",
 "vue-router": "^3.0.1",
 "vuex": "^3.1.2"
  }

gulpfile.js

代码语言:javascript
复制
const elixir = require('laravel-elixir');
require('laravel-elixir-webpack-official');
require('laravel-elixir-vue-2')
elixir((mix) => {
 mix.sass('app.scss')
       .webpack('app.js');
});

webpack.mix.js

代码语言:javascript
复制
let mix = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css');
mix.browserSync({
 proxy: 'localhost:8000'
});

resources/assets/js文件夹下创建page文件+api.js+app.js+routes.js

app.js

代码语言:javascript
复制
require('./bootstrap');
window.Vue = require('vue');
import VueRouter from 'vue-router';
Vue.use(VueRouter);
import store from './store/'; // vuex 数据存储所需对象
import routes from './routes';    // 路由配置文件
// 实例化路由
const router = new VueRouter({
 routes
})
var vm = new Vue({
 store,
 router
}).$mount('#app');

routes.js

代码语言:javascript
复制
export default[
    { path: '', redirect: '/index' },
    { path: '/index', component: require('./page/App.vue') },
    { path: '/list', component: require('./page/List.vue') },
    { path: '/detail/:id', component: require('./page/Detail.vue') }];

a

代码语言:javascript
复制
php artisan serve
npm run watch

Error: Can't resolve 'vue-route' in

代码语言:javascript
复制
cnpm install --save vue-route

Error: Can't resolve 'vuex' in

代码语言:javascript
复制
cnpm install --save vuex

成功之后

安装element-ui

代码语言:javascript
复制
cnpm i element-ui -S

安装vant

代码语言:javascript
复制
cnpm i vant -S

安装 babel-plugin-import 插件,babel-plugin-import 是一款 babel 插件,它会在编译过程中将 import 的写法自动转换为按需引入的方式

代码语言:javascript
复制
npm i babel-plugin-import -D

在根目录下创建.babelrc文件,并在其中配置plugins(插件)

代码语言:javascript
复制
"plugins": [
    "transform-vue-jsx", 
    "transform-runtime",
    ["import", [{ "libraryName": "vant", "style": true }]]
  ],

<script>

import { Loading } from 'vant'

export default {

components: {

[Loading.name]: Loading

}

}

</script>

Vant UI 组件库做rem适配

px单位转化为rem,借助postcss-pxtorem插件

代码语言:javascript
复制
cnpm install autoprefixer postcss-pxtorem --save-dev

vue.config.js文件

代码语言:javascript
复制
const autoprefixer = require('autoprefixer')
const pxtorem = require('postcss-pxtorem')
module.exports = {
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          autoprefixer(),
          pxtorem({
            rootValue: 37.5,
            propList: ['*'],
            // 该项仅在使用 Circle 组件时需要
            // 原因参见 https://github.com/youzan/vant/issues/1948
            selectorBlackList: ['van-circle__layer']
          })
        ]
      }
    }
  }
}

rem适配

rem适配文档上建议使用lib-flexible,flexible适配的原理是物理像素与逻辑像素的相互转化:物理像素px = window.screen.width(逻辑像素pt) * window.devicePixelRatio

代码语言:javascript
复制
cnpm i -S amfe-flexible

app.js引入

代码语言:javascript
复制
import 'amfe-flexible'

项目中使用

宽度为750px的设计图,由于rootValue: 37.5为基准,在写css时候设计图上文字大小多少像素就写多少像素即可

cnpm install axios --save

第二

laravel-mix使用postcss-px-to-viewport

在webpack.mix.js中添加

代码语言:javascript
复制
mix.js('resources/assets/js/app.js', 'public/js')
 .postCss('resources/assets/css/app.css', 'public/css')
 .options({
    postCss: [
 require('postcss-px-to-viewport')
    ]});

代码语言:javascript
复制
npm run watch

会报错缺少插件,类似这种安装

代码语言:javascript
复制
cnpm install postcss-viewport-units --save-dev

vue加载优化

  1. 安装: cnpm install --save-dev webpack-bundle-analyzer
代码语言:javascript
复制
webpack.mix.js中
mix.webpackConfig({
 plugins: [
 new BundleAnalyzerPlugin(),
  ],
}).js('resources/assets/js/app.js', 'public/js')
  .sass('resources/assets/sass/app.scss', 'public/css');

运行

代码语言:javascript
复制
npm run dev

参考:

  1. https://learnku.com/articles/9054/laravel55-vue-development-single-page-application
  2. https://learnku.com/articles/23748
  3. https://blog.csdn.net/ansu2009/article/details/80682920
  4. https://blog.csdn.net/weixin_30242907/article/details/101909189

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • package.json
  • gulpfile.js
  • webpack.mix.js
  • app.js
  • routes.js
    • 成功之后
      • 安装element-ui
        • 安装vant
          • 安装 babel-plugin-import 插件,babel-plugin-import 是一款 babel 插件,它会在编译过程中将 import 的写法自动转换为按需引入的方式
            • 在根目录下创建.babelrc文件,并在其中配置plugins(插件)
            • Vant UI 组件库做rem适配
            • 第二
              • laravel-mix使用postcss-px-to-viewport
              • vue加载优化
                • 参考:
                相关产品与服务
                数据保险箱
                数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档