⭐️ 本文首发自 前端修罗场(点击即可加入),一个专注 Web 技术、答疑解惑、面试辅导、职业发展的社区。现在加入,即可参与打卡挑战,和一群人一起努力。挑战成功即可获取一次免费的模拟面试机会,进而评估知识点的掌握程度,获得更全面的学习指导意见,不走弯路,不吃亏!


开发fis的这个团队,经过艰辛的探索之后发现,前端开发所需的编译能力只有3种:

1、内容嵌入:把一个文件的内容(文本)或者base64编码图片嵌入到另一个文件中;
2、资源定位:获取任何开发中所使用资源的线上路径;
3、依赖声明:在一个文本文件内标记对其他资源的依赖关系;

于是,为了解决这3项功能,fis团队开发出了内置的语法对其进行操作。

内置语法主要针对的是 html\css\js 等三种语言提供的编译语法。

嵌入资源——内容嵌入

例如,1、将base64图片嵌入到css\js里;2、前端模板编译到js文件中;3、将js\css\html拆分成几个文件最后合并到一起的能力...等等。

有了这项能力,在减少http请求数方面将大大提升。

需要注意的是,在组件化开发方面,fis是不建议使用“资源嵌入”的方式作为组件化拆分的手段,后面讲到的“声明依赖”能力会更适合组件化开发。

(1)在html中嵌入资源

前提:在html中嵌入其他文件内容或者base64编码值,可以在资源定位的基础上,给资源加上“?_inline”参数来标记资源嵌入需求。

关键词: ?_inline

例如:在html中嵌入base64图片

编译前,针对logo这张图进行处理:
<img src="img/logo.png?_inline" />

编译后:
<img src="https://img-blog.csdnimg.cn/2022010709134410521.gif"/>

例如:在html中嵌入样式文件

编译前,对外联样式style.css处理如下:

<link rel="stylesheet" type="text/css" href="style.css?_inlne">

编译后,在html中之间就将外联样式style.css的内容嵌入了内联样式,从而减少请求数:

<style>img {border:5px solid #ccc}</style>

例如:在html中嵌入脚本资源

编译前,针对外联脚本文件app.js做如下处理:

<script type="text/javascript" src="app.js?_inline" /></script>

编译后,将外联脚本文件app.js中的内容嵌入到html中作为内联脚本:
<script type="text/javascript"> console.log('我是内联app.js'); </script>

例如,在Html中嵌入页面(html)文件:

编译前,在html的<div id="div1"></div>标签中插入:
<link rel="import" href="demo.html?_inlne">

编译后,在<div id="div1"></div>中将插入demo.html 的内容:
<div id="div1"> 我是demo.html的内容 </div>

前面讲了如何在html中嵌入资源。别急,fis3还有一个强大的功能——在js中嵌入资源。

(2)在js中嵌入资源

前提:__inline()函数,注意是2条短下划线。该函数可以陷入图片的base64编码、嵌入其他js 或者前端模板文件的编译内容。

当然,该函数对html中的< script>标签里的内容同样是有用的。

例如:在js中嵌入js文件:

编译前,在app.js文件中写入如下:
__inline('demo.js');

编译后,在app.js文件中将有demo.js的内容:

console.log('我是demo.js中的内容');

假设demo.js中内容为console.log(‘我是demo.js中的内容’)

例如,在js中嵌入base64图片

编译前,js文件中写入如下:var img=__inline('img/logo.png');编译后,原先那串代码被替换成base64位的图片:var img='https://img-blog.csdnimg.cn/2022010709134410521.gif';

当然,你还可在js中嵌入其他文本文件,例如css文件:

编译前,js文件有代码如下:var css=__inline('a.css');编译后,js文件中那串代码变成了:var css="body \n{color:red;\n}";
//假设a.css的内容如下:
body{color:red;
}

除了之外,fis3还提供在css文件只能怪嵌入资源。

(3)在CSS中嵌入资源

与html中嵌入资源类似,通过编译标记?_inline可以嵌入文件内容。
但是,要注意的一点,除了src="xxx"之外。因为在ie中,src被用在ie支持的滤镜filter内,该属性目前不支持base64字符串。

例如,在a.css文件中嵌入b.css文件的内容:

编译前,在a.css文件中写入:@import url('b.css?_inline');编译后,在a.css文件中将嵌入如下内容那个:a {border:1px solid #ccc};//这里我们假设b.css的内容为:
a{border:1px solid #ccc;
}

再例如,在css中嵌入base64图片

编译前,在a.css文件中写入:.div1 {background:url(img/logo.png?__inline);
}
编译后,a.css中这串css代码将变为:.div1 {background: url(https://img-blog.csdnimg.cn/2022010709134410521.gif);
}

###小结:

关键词:?_inline编译标记——处理html\css内嵌__inline()内置函数;——处理js内嵌

【工具】fis3 - 语法教程(1)之资源嵌入相关推荐

  1. 【工具】fis3 - 语法教程(2)之定位资源

    ⭐️ 本文首发自 前端修罗场(点击即可加入),一个专注 Web 技术.答疑解惑.面试辅导.职业发展的社区.现在加入,即可参与打卡挑战,和一群人一起努力.挑战成功即可获取一次免费的模拟面试机会,进而评估 ...

  2. 【工具】fis3 - 使用教程(02)

    ⭐️ 本文首发自 前端修罗场(点击即可加入),一个专注 Web 技术.答疑解惑.面试辅导.职业发展的社区.现在加入,即可参与打卡挑战,和一群人一起努力.挑战成功即可获取一次免费的模拟面试机会,进而评估 ...

  3. Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具)

    Android资源总结(开发工具/环境搭建/教程/论坛/博客/反编译工具) 在Android发展前景相当好的情况下,本人最近搜集了一些关于Android的相关资源,当然包含以前发布的博客内容,进行了一 ...

  4. 鼠标侧键设置工具X-Mouse安装教程

    鼠标侧键设置工具X-Mouse安装教程 X-Mouse是一款管理鼠标功能键的工具,通过它我们可以将鼠标的键赋予各种功能 下载地址:https://www.highrez.co.uk/downloads ...

  5. 工具集核心教程 | 第五篇: 利用Velocity模板引擎生成模板代码

    前言 不知道大家有没有这样的感觉,在平时开发中,经常有很多dao.service类中存着很多重复的代码,Velocity提供了模板生成工具,今天我教大家怎么和这些大量的重复代码说再见. 参考项目:ht ...

  6. Python for虚幻引擎编辑器工具脚本学习教程

    Python for Unreal Engine Editor Tools Scripting MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英 ...

  7. truffle (ETH以太坊智能合约集成开发工具) 入门教程

    truffle (ETH以太坊智能合约集成开发工具) 入门教程 前言 在你了解区块链开发之前,你有必要了解区块链的一些基础知识,什么是DApp,DApp与传统app的区别, 什么是以太坊,以太坊中的智 ...

  8. TWiki 语法格式(TWiki语法教程及TWiki使用技巧)

    TWiki 语法格式(TWiki语法教程及TWiki使用技巧) Winter 翻译 用TWiki 编辑就和平时直接写文本一样简单 -- 就像写email.如果你喜欢,你可以使用HTML代码,但是并不要 ...

  9. CSS的预编译——less语言基本语法教程(入门)

    less语言基本语法教程(入门) 一.CSS解析 css是一门标记性语言,语法简单,对使用者的要求也比较低. 缺点:1.对于css:使用css时需要书写大量的看似没有逻辑的代码,不方便维护和扩展,不利 ...

最新文章

  1. context.xml mysql_在tomcat下context.xml中配置各种数据库连接池(示例代码)
  2. linux c chmod 更改权限函数
  3. 美团面试题:Redis 内存满了怎么办?
  4. mysql每一步花费时间_MySQL花费更多时间发送数据
  5. nyoj66分数拆分
  6. 周期获取Linux系统内存
  7. getX(),getY()等方法的区别(图解)
  8. css-如何对每行中最后一个元素删除边距?
  9. Mvc5 控制器,视图简单说明
  10. 利用丁香园数据生成疫情分布地图(R语言)| 博文精选
  11. 接口测试工具---apipost控制台使用
  12. notes系统服务器地址,在Notes客户端和Domino服务器上,服务器地址的缓存(Cache)存放在哪里...
  13. RxJava2 背压
  14. html5画图程序,基于HTML5的Windows画图程序
  15. 170915 逆向-问鼎杯题库(小磊生病了)
  16. 支付宝当面付之扫码支付“无效签名”
  17. 血族手游Lua脚本及资源文件解密
  18. 并发底层原理:线程、资源共享、volatile 关键字
  19. Photoshop 2020MAC最新版下载地址 一键安装
  20. Docker:MacOS环境下修改容器的端口号

热门文章

  1. ISIS路由协议基础
  2. 帮管客CRM客户管理系统 v3.2.0
  3. semantic fusion中的Elastic Fusion 配置记录 Ubuntu16.04
  4. 关于力控无法插入图片
  5. 【rmzt:保时捷911炫酷主题】
  6. 计算机关机速度,高手教你摆平Win7关机速度慢的技巧
  7. 人工智能——DBSCAN密度聚类(Python)
  8. java 图片url转图片
  9. 在 Ubuntu 上安装 Sublime,亲测Ubuntu 18.04.6可用
  10. 回到过去变成猫 读后感