吾日三省吾身。

从一个完全不相干的行业转到IT,多多少少都会感到迷茫,不知道学习什么、从何学起?在几乎没有任何经验的背景下,坚持投递简历,最后终于进入了一个创业公司,开始做起了前端工作。工资勉强维持生活。工作之余,也在不停的学习。

项目web页面多是用的jsp,项目组leader对html、css、js这块也不甚了解,所以大多数时候都是自己去研究怎么搞。

每次版本更新的时候都会遇到缓存的问题,然后自己就去找解决方案,然后就发现了fis3(http://fis.baidu.com/)这个前端构建工具,感觉还挺好用,又适合现在的项目。

基本用法也很简单:

  • 安装
    需要先安装node和npm(注意:node版本最好安装9.xx以下的,否则fis3的某些功能不支持)
    直接命令行执行
      npm install -g fis3
    安装成功后,fis3 -v可以看到版本
  • 开始
    fis3的构建不会修改源码,只是会通过设置,将构建结果输出到指定的目录中。它可以实现将相对路径转绝对路径,给文件加md5戳,这也是解决缓存问题的关键。
    建立项目文件夹,在项目根目录下建立fis-conf.js文件。这里的根目录也会作为设置绝对目录的依据,当然也可以自行通过设置,改变绝对路径的url。
    普通web页面一般只会用到下面几个功能:
    a. 文件md5戳
        
    fis.match('*.{css,js,png,jpg}', {
    useHash: true
    })

    可以自行控制匹配项,有些文件不一定需要加文件指纹,可以

    fis.match('{reset.css,jquery.js}', {
    useHash: false
    })

    b. 资源压缩
    通常需要压缩的资源有css样式文件,js文件,图片等

    // css样式文件
    fis.match('*.css', {
    // fis-optimizer-clean-css插件已内置
    optimizer: fis.plugin('clean-css')
    }) // js文件
    fis.match('*.js', {
    // fis-optimizer-uglify-js插件已内置
    optimizer: fis.plugin('uglify-js')
    }) // png格式图片文件
    fis.match('*.js', {
    // fis-optimizer-png-compressor插件已内置,该插件不支持10.xx版本的node,所以需要用的的建议不要升级node
    optimizer: fis.plugin('png-compressor')
    })

    c. 雪碧图
    fis3可以对背景图片自动进行雪碧图合并,写样式的时候,后面加上?__sprite

    li.list1 {
    background-image: url('./img/list-1.png?__sprite');
    } li.list2 {
    background-image: url('./img/list-2.png?__sprite');
    }
    // 首先启用fis-spriter-csssprites 插件
    fis.match('::package', {
    spriter: fis.plugin('csssprites')
    }) // 对设置了?__sprite的背景图片合并
    fis.match('*.css', {
    useSprite: true
    })

    d. sass、less预编译器
        sass:需要先安装fis-parser-node-sass插件
        npm install -g fis-parser-node-sass

    fis.match('*.scss', {
    parser: fis.plugin('node-sass'),
    rExt: '.css',
    useHash: true // 可以直接在这里添加md5戳
    });

    less:需要先安装fis-parser-less插件
        npm install -g fis-parser-less

    fis.match('*.less', {
    parser: fis.plugin('less'),
    rExt: '.css'
    })

    页面中的样式文件仍然引用原文件

    <link rel="stylesheet" href="./css/XXX.less">
    <link rel="stylesheet" href="./css/XXX.scss">

    d. 预览与文件监听
        fis3内置server,可以使用命令
        fis3 server start 开启内置服务器,默认8080端口,fis3 server stop 关闭服务器。
        使用命令
        fis3 release -wL 将项目发布到内置服务器,并开启文件监听,在编辑器中修改代码,保存后会在浏览器(推荐使用Chrome)实时更新。
    如果静态资源的访问路径与项目根路径不一致,可以使用url配置

    fis.match('*.{png,js,jpg,css,scss}', {
    url: '/src/pages$0'
    })

    这样就基本满足一个多页面web项目的要求了。

    添加了md5戳,再也不需要担心缓存问题了

使用百度fis3构建前端多页应用的更多相关文章

  1. 利用fis3构建前端项目工程

    FIS3是国内百度公司产出的一款前端工程构建工具,FIS3可以解决前端工程中性能优化.资源加载(异步.同步.按需.预加载.依赖管理.合并.内嵌).模块化开发.自动化工具.开发规范.代码部署等问题,首先 ...

  2. Fis3的前端模块化之路[基础篇]

    Fis3版本:v3.4.22 fis3是一个构建工具 解决前端开发中自动化工具.性能优化.模块化框架.开发规范.代码部署.开发流程等问题. 安装 npm install -g fis3 运行 fis3 ...

  3. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码]

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(2)-easyui构建前端页面框架[附源码] 开始,我们有了一系列的解决方案,我们将动手搭建新系统吧. 用 ...

  4. python使用get在百度搜索并保存第一页搜索结果

    python使用get在百度搜索并保存第一页搜索结果 作者:vpoet mail:vpoet_sir@163.com 注:随意copy,不用在意我的感受 #coding:utf-8 import ur ...

  5. ASP.NET MVC下实现前端视图页的Session

    在ASP.NET MVC的控制器中可以实现Session处理.如果要在前端视图页实现Session该如何做呢?可以使用window.sessionStorage来做. AlexChittock用jQu ...

  6. Gulp构建前端自动化工作流之:常用插件介绍及使用

    在对Gulp有了一个初步的了解之后,我们开始构建一个较为完整的Gulp开发环境. 本文主要分为6个段落: 1. 构建项目目录结构(Directory Structure Build) 2. 插件介绍及 ...

  7. vue 构建前端项目并关联github

    这几天尝试用node开发一个网站,后端的接口已经初步开发完成,现在开始构建前端的项目,记录下过程,在学习下吧. 用vue-cli 构建项目,myproject.(构架过程略过) 每次在本地构建项目后和 ...

  8. Gulp安装及配合组件构建前端开发一体化(转)

    Gulp安装及配合组件构建前端开发一体化 所有功能前提需要安装nodejs(本人安装版本v0.10.26)和ruby(本人安装版本1.9.3p484). Gulp 是一款基于任务的设计模式的自动化工具 ...

  9. 使用webpack+vue.js构建前端工程化

    参考文章:https://blog.csdn.net/qq_40208605/article/details/80661572 使用webpack+vue.js构建前端工程化本篇主要介绍三块知识点: ...

随机推荐

  1. HDU 4363

    这题是记忆化搜索很容易想到,但状态却不好设 dp[i][j][u][d][l][r][k].对于矩形为i*j,它的四周的颜色分别为u,d,l,r,横竖切的状态为k的种数. 其中要注意一个问题是,停止不 ...

  2. Windows移动开发(五)——初始XAML

    关于详细的基本功就先说这么多.后面遇到再补充说明,前面说的都是一些代码和原理方面的东西.接下来说的会有界面和代码结合,会有成就感,由于能真正的做出东西来了. Windows移动开发包含Windows ...

  3. Codeforces Round #388 (Div. 2) C. Voting

    题意:有n个人,每个人要么是属于D派要么就是R派的.从编号1开始按顺序,每个人都有一次机会可以剔除其他任何一个人(被剔除的人就不在序列中也就失去了剔除其他人的机会了):当轮完一遍后就再次从头从仅存的人 ...

  4. javascript 打印函数名称和被引用的函数

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. Linux系统编程——特殊进程之僵尸进程

    僵尸进程(Zombie Process) 进程已执行结束,但进程的占用的资源未被回收.这种进程称为僵尸进程. 在每一个进程退出的时候,内核释放该进程全部的资源.包含打开的文件.占用的内存等. 可是仍然 ...

  6. 73. 解决ExtJS TreePanel 的 iconCls设置问题

    转自:https://blog.csdn.net/hanchuang213/article/details/62881568 很久没有写代码了,最近在做一个在线帮助网站,于是又捡起了 ExtJS,我用 ...

  7. Check the difficulty of problems(概率+DP)

    http://poj.org/problem?id=2151 看的题解..表示没看懂状态转移方程.. #include<stdio.h> #include<string.h> ...

  8. 原生JS---2

    js中的程序控制语句 常见的程序有三种执行结构: 1. 顺序结构 2. 分支结构 3. 循环结构 顺序结构:程序从第一行开始执行,按顺序执行到最后一行 分支结构:就像一条岔路口,必须选择且只能选择其中 ...

  9. [Apple开发者帐户帮助]五、管理标识符(2)启用应用服务

    您可以在证书,标识符和配置文件中查看和启用App ID的服务.包含已修改的App ID的供应配置文件将变为无效.您需要重新生成使用该App ID的配置文件. 注意:要为应用程序完全配置服务,请在Xco ...

  10. CSS中的五大字体家族(cursive 手写字体族更吸引我)

    这是CSS中的五大字体家族. serifserif 中文翻译为“衬线字体族”.serif 具有末端加粗.扩张或尖细末端,或以实际的衬线结尾的一类字体.可以看出 serif 总是在文字末端做文章,这样做 ...