分类: 技术

  • Laravel 使用 Laravel Mix 打包前端静态资源,引入 Vue

    Laravel 使用 Laravel Mix 打包前端静态资源,引入 Vue

    Laravel 的静态资源处理方式不断更新,5.4 版本从 基于 gulp 的 laravel-elixir 完全升级到构建于 webpack 之上的 laravel-mix。

    项目原来的打包策略

    1445238527elixir-1024x549.jpg

    本站基于 Laravel 开发,更新到 Laravel 5.4 之前的静态资源打包混合使用laravel-elixir(gulp)webpack,由于要实现静态资源(主要是 js)跟随版本的模块化加载,以便下一步实现静态资源分离,使用 CDN 加速(本站使用七牛),其时的gulpfile.js打包脚本如下:

    /* ...省略了一些变量定义代码... */
    
    elixir(function (mix) {
        /* bootstrap 字库 */
        mix.copy(AWESOME_FONT_PATH, `${DIST_PATH}/fonts`);
    
        /* 复制图片 */
        mix.copy('resources/assets/img', `${DIST_PATH}/img`);
    
        /* CSS 处理 */
        mix.sass('lib.scss', `${DIST_PATH_WITH_VERSION}/css/lib.css`);
        mix.sass('app.scss', `${DIST_PATH_WITH_VERSION}/css/app.css`);
        mix.sass('control.scss', `${DIST_PATH_WITH_VERSION}/css/control.css`);
    
        /* JS 处理 */
        mix.webpack([], `${DIST_PATH_WITH_VERSION}/js`);
    });
    

    webpack.config.js文件中的处理脚本如下:

    /* ...省略了一些变量定义代码... */
    
    // webpack 入口
    let entry = {
        vendor: ['jquery', 'bootstrap-sass']
    };
    
    /**
     * 生成文件入口
     */
    _.forEach(JS_MODULES, module => {
        if (module !== 'helpers') {
            entry[module] = path.resolve(JS_PATH, module, 'index.js');
        }
    });
    
    //noinspection JSUnresolvedVariable
    module.exports = {
        entry: entry,
        output: {
            filename: '[name].bundle.js'
        },
        resolve: {
            alias: {
                'jquery': path.join(__dirname, 'node_modules/jquery/src/jquery')
            }
        },
        plugins: [
            new webpack.optimize.CommonsChunkPlugin({
                names: ['vendor', 'manifest'],
            }),
        ],
    };
    

    更新到 Laravel 5.4 之后项目的打包策略

    1-LthzZzfbaat9WPg6hQRCNg.png

    更新到 Laravel 5.4 之后,全部使用 webpack 来打包静态资源,迁移步骤如下:

    1. 参考 Laravel 5.4 更新 package.json 文件;
    2. 添加webpack.mix.js文件;
    3. 复制一份webpack.config.js文件到项目的根目录(备份好原有的配置文件):cp node_modules/laravel-mix/setup/webpack.config.js webpack.config.js 删除package.json文件scripts字段中如下参数配置,以加载使用复制的配置文件--config=node_modules/laravel-mix/setup/webpack.config.js 使用复制的 webpack 配置文件的原因是要支持模块化跟随版本的打包方式,实际上仅仅修改了原有配置中的输出路径。
    4. 迁移原有的配置,webpack.mix.js文件更新如下:const { mix } = require('laravel-mix'); /* ...省略了一些变量定义代码... */ /* CSS 处理 */ mix.sass('resources/assets/sass/lib.scss', `${DIST_PATH_WITH_VERSION}/css/lib.css`) .sass('resources/assets/sass/app.scss', `${DIST_PATH_WITH_VERSION}/css/app.css`) .sass('resources/assets/sass/control.scss', `${DIST_PATH_WITH_VERSION}/css/control.css`); /* JS 处理 */ _.forEach(JS_MODULES, module => { if (module !== 'helpers') { mix.js(`${JS_PATH}/${module}/index.js`, `${DIST_PATH_WITH_VERSION}/js/${module}.bundle.js`); } }); /* Vue 处理 */ mix.js('resources/vue/index.js', `${DIST_PATH_WITH_VERSION}/js/vue.bundle.js`); /* 公共库 */ mix.extract(['jQuery', 'vue'], `${DIST_PATH_WITH_VERSION}/js/vendor.bundle.js`); 可以看到,添加了 Vue 处理路径配置,具体的处理脚本,原作者已经在webpack.config.js中写好了!

    无论是原有的打包方式,还是新的打包方式,,我们要做的也就是根据项目规划,配置一下打包文件入口和输出而已,其他的处理,Laravel 已经配置好了。

  • 树莓派(Raspberry Pi)入门实战记录之 SSH 局域网无线连接

    树莓派(Raspberry Pi)入门实战记录之 SSH 局域网无线连接

    树莓派作为一台完整的微型电脑,可玩性很高。树莓派使用 microSD Card 作为存储介质,安装系统就是把系统镜像写入 microSD Card 中。将写好系统的 microSD Card 放入树莓派的 microSD Card 插槽中,通电,就完成了树莓派启动。我手中的树莓派是 Raspberry Pi 3 Model B 型,集成了蓝牙和 WIFI 模块。

    在 Mac 下用 ApplePi-Baker 安装树莓派系统非常方便,ApplePi-Baker 的界面如下图所示:

    WechatIMG1.jpeg
    1. 左侧选择要写入树莓派系统的 microSD Card;
    2. 右侧上方小窗口 IMG file 选择下载好的树莓派系统镜像(我一般使用树莓派官方制作的 RASPBIAN 镜像,可以从树莓派官网下载到);
    3. 然后点击右侧上方小窗口中的 Restore Backup 按钮,等进度条跑满就完成了树莓派系统的制作。

    接下来的操作就是将写好系统的 microSD Card 装进树莓派,开机。

    如果有一台显示器,可以选择相应树莓派操作系统的图形界面版本,将显示器、鼠标、键盘接入树莓派来实现普通桌面电脑的操作体验。我拿到树莓派的时候手边并没有可用的显示器,也并不打算通过外接键盘、鼠标的方式实现对树莓派的控制,所以下面介绍通过 SSH 方式连接树莓派。如果通过 SSH 方式连接树莓派,在写好系统后要新建一个名为 SSH 的文件放入 microSD Card 的根目录,以打开树莓派的 SSH 功能。然后进行如下操作:

    1. 将树莓派通过网线连接路由器;
    2. 通过路由器的管理界面查看树莓派目前使用的 IP 地址,记下这个地址(我的是:192.168.0.15);
    3. 树莓派的默认用户是 pi,密码是 raspberry ,通过以下命令可以连接到树莓派:ssh pi@192.168.0.15 WX20170415-215417@2x.png

    经过上面三步已经通过 SSH 方式连接到了树莓派,接下来我们可以让树莓派通过无线连接方式连接到路由器(当然得是无线路由器)。我使用的是树莓派官方制作的 RASPBIAN 系统,选择其他系统可能操作不同。

    1. 查看可用的网路,必须使用 sudo (这步非必须,如果知道无线路由器的 ESSID 的话): sudo iwlist wlan0 scan 记下要连接的无线路由器的 ESSID:WX20170415-220916@2x.png
    2. 编辑 /etc/wpa_supplicant/wpa_supplicant.conf,添加无线网络配置: network={ ssid="Targaryen-Cloud" psk="your-password" }
    3. 重启系统,拔掉网线,通过路由器管理界面可以看到树莓派已经通过新的无线方式连接到路由器了。

    这一步结束后路由器可能会为树莓派分配新的 IP 地址,所以 SSH 连接树莓派时注意切换新的 IP 地址!

  • 在树莓派上安装 Docker 记录

    在树莓派上安装 Docker 记录

    树莓派默认源中的 Docker 版本太老了,一些 Docker 的新特性无法尝试,这里尝试在树莓派上安装新版本的 Docker。安装方法主要参考了开源中国的一篇文章 《Raspberry-jessie Docker 安装记》。如果去看原文并且也只是想安装 Docker 的话 ,建议从原文的第 5 步开始看起,前面是作者的试错过程。这里将可以成功在树莓派上安装新版本 Docker 的关键步骤整理如下:

    1. 添加源到系统,这里使用的是阿里的源,将 debhttp://mirrors.aliyun.com/docker-engine/apt/reporaspbian-jessie main 加入到系统 /etc/apt/sources.list 文件中。
    2. 将 key F76221572C52609D (这 key 是在添加源后执行 sudo apt-get update 的警告信息中获得的)添加到系统 apt-key 列表:gpg -a --export F76221572C52609D | sudo apt-key add -
    3. 安装 Dockersudo apt-get update sudo apt-get install docker-engine

    至此,完成了在树莓派上安装新版本 Docker 的全部过程!

    nature-2129493_1920.jpg