Laravel與前端的最佳實踐技巧Laravel-Mix

Laravel Mix

laravel在與前端相結合這塊作的很不錯,提供了Laravel Mixphp

Laravel Mix 提供了簡潔且可讀性高的 API ,用於使用幾個常見的 CSS 和 JavaScript 預處理器爲應用定義 Webpack 構建步驟。能夠經過簡單鏈式調用來定義資源的編譯。css

咱們能夠本身使用sass,npm,es6語法,壓縮,生成隨機文件名,經過webpack打包生成 注入到咱們的html中html

簡單的一行代碼,Laravel Mix 能夠執行不少重要的操做。前端

  • ES2017 + 模塊編輯
  • 建立而且編譯 .vue 組件 (經過 vue-loader)
  • 模塊熱替換
  • Tree-shaking 打包技術, webpack 2 裏新增的 (移除未使用的庫代碼)
  • 提取和拆分 vendor 庫 (經過 mix.extract()), 讓長期緩存變的容易
  • 自動版本化 (文件哈希),經過 mix.version()

可查看本人項目源碼github.com/WXiangQian/…vue

具體使用例子react

webpack.mix.js中webpack

mix.js('resources/assets/js/app.js', 'public/js')
    .js('resources/assets/js/geetest.js','public/js')
    .sass('resources/assets/sass/app.scss', 'public/css')
    .sass('resources/assets/sass/index.scss', 'public/css')
    .sass('resources/assets/sass/post.scss', 'public/css')
    .sass('resources/assets/sass/search.scss', 'public/css')
    .version();複製代碼

blade.php 中就能夠使用laravel

<link rel="stylesheet" href="{{ mix('/css/index.css') }}">複製代碼

Laravel 5.5 preset命令

Laravel 5.5發佈,新增長了一個preset的命令。git

php artisan preset複製代碼

這行代碼主要就是方便咱們切換前端框架,好比react,vue,bootstarp時。若是想使用vue就能夠es6

php artisan preset vue複製代碼

vue在laravel中具體實例

下面作個返回頭部的vue的組件

1.咱們在resources\js\components定義GoTop.vue

<template>
  <transition name="fade">
    <div class="goTop" @click="goTop" v-if="isShow">
        <span class="glyphicon glyphicon-menu-up"></span>
    </div>
  </transition>
</template>

<script>
    export default {
        data() {
            return {
                isShow : false,
            }
        },
        mounted() {
            let that = this;
            $(window).scroll(function(){
                if( $(this).scrollTop() > 50 ){
                    that.isShow = true;
                } else {
                    that.isShow = false;
                }
            });
        },
        methods: {
            goTop() {
                $('html,body').animate({scrollTop:0});
            }
        }
    }
</script>
<style scoped lang="scss">
  .fade-enter-active, .fade-leave-active {
    transition: opacity .5s;
  }
  .fade-enter, .fade-leave-to {
    opacity: 0;
  }
  .goTop {
    position: fixed;
    right: 36px;
    bottom: 50px;
    background: #FFF;
    width: 50px;
    height: 50px;
    line-height: 60px;
    text-align: center;
    border-radius: 2px;
    box-shadow: 0 4px 12px 0 rgba(7,17,27,.1);
    cursor: pointer;
    z-index: 1000;
    span {
      font-size: 20px;
    }
  }
</style>
複製代碼

2.在resources\js\app.js註冊

Vue.component('go-top', require('./components/GoTop.vue'));複製代碼


3. 在blade.php 模版中使用

```html
<go-top></go-top>
複製代碼

注意: vue作全局組件不易太多,由於打包app.js會被全部頁面都會加載到。

vue 彩蛋

若是一個組件裏引入另組件可能你的控制檯就會報一個錯誤,[Vue warn]: Failed to mount component: template or render function not defined. (found in root instance)

緣由的話,具體參考這篇文章

那若是咱們在laravel中遇到這種問題該怎麼解決呢?,就是把全部組件都在app.js註冊。

相關文章
相關標籤/搜索