1.在html文件中,如果在标签的style属性内添加路径,fis不会识别改路径并打包,如

2.fis主要针对静态文件进行打包。对其他文件打包会出现一些问题。

  比如jsp页面。下面的例子script.jsp(这个jsp会在其他页面使用<%@include file="/WEB-INF/include/script.jsp"%>引用,里面有两个变量MOD_NOT_INCLUDED和JQUERY_NOT_INCLUDED,初始值都是true)

  2.1 jsp中引用mod.js

<%if(MOD_NOT_INCLUDED){%>
<script type="text/javascript" src="/common/dep/mod.js"></script>
<%MOD_NOT_INCLUDED=false;}%>
<%if(JQUERY_NOT_INCLUDED){%>
<script type="text/javascript" src="/common/dep/jquery.js"></script>
<%JQUERY_NOT_INCLUDED=false;}%>
<script src="/js/wording.js" type='text/javascript'></script>

  注意:fis会检查引用的名称为mod.js的引用(mod.js是fis默认模块加载脚本,改成别的名称fis就不会识别了),将mod.js的引用放在<body></body>的最后面;如果本页面没有body标签则导致mod.js无地方放置,最终编译后的结果是

<%if(MOD_NOT_INCLUDED){%>
<%MOD_NOT_INCLUDED=false;}%>
<%if(JQUERY_NOT_INCLUDED){%>
<script type="text/javascript" src="/static/pc-dev/common/dep/jquery.js"></script>
<%JQUERY_NOT_INCLUDED=false;}%>

  <script type="text/javascript" src="/common/dep/mod.js"></script>没有了。

  注意续:如果mod.js放置成功(本文件有body标签),然后收集这个文件中的所有外部引用js引用,然后将js的引用放在mod.js引用的后面,css引用然后将css引用放在<head></head>的最后面,。我们将上面的例子更改为

<link rel="stylesheet" type="text/css" href="/common/css/common.scss" />
<%if(MOD_NOT_INCLUDED){%>
<body>
<script type="text/javascript" src="/common/dep/mod.js"></script>
</body>
<%MOD_NOT_INCLUDED=false;}%>
<%if(JQUERY_NOT_INCLUDED){%>
<script type="text/javascript" src="/common/dep/jquery.js"></script>
<%JQUERY_NOT_INCLUDED=false;}%>

  编译结果是

<link rel="stylesheet" type="text/css" href="/static/pc-dev/common/css/common.css" />
<%if(MOD_NOT_INCLUDED){%>
<body> <script type="text/javascript" src="/static/pc-dev/common/dep/mod.js"></script>
<script type="text/javascript" src="/static/pc-dev/common/dep/jquery.js"></script>
</body>
<%MOD_NOT_INCLUDED=false;}%>
<%if(JQUERY_NOT_INCLUDED){%>
<%JQUERY_NOT_INCLUDED=false;}%>

  但是无论如何只要jsp中引用mod.js都可能导致脚本引入位置发生改变,从而导致逻辑混乱(如上面的MOD_NOT_INCLUDED判断根本没有起到任何作用)。

  2.2 jsp的引入脚本中使用data-loader属性

  如下实例

<%if(JQUERY_NOT_INCLUDED){%>
<script type="text/javascript" src="/common/dep/jquery.js" data-loader></script>
<%JQUERY_NOT_INCLUDED=false;}%>

  fis编译结果

<%if(JQUERY_NOT_INCLUDED){%>
<%JQUERY_NOT_INCLUDED=false;}%>

  结果是脚本没有了。说明:使用data-loader属性,脚本会被收集,并且放在<body></body>的最后面,如果没有body标签则导致脚本无处放置。

  我们加上body标签

<%if(JQUERY_NOT_INCLUDED){%>
<body>
<script type="text/javascript" src="/common/dep/jquery.js"></script>
</body>
<%JQUERY_NOT_INCLUDED=false;}%>
<script src="/js/wording.js" type='text/javascript'></script>

  编译结果

<%if(JQUERY_NOT_INCLUDED){%>
<body> <script type="text/javascript" src="/static/pc-dev/common/dep/jquery.js"></script>
<script type='text/javascript' src="/static/pc-dev/js/wording.js"></script>
</body>
<%JQUERY_NOT_INCLUDED=false;}%>

  说明:fis检测到页面中有body也会去收集js引用,然后放置在body标签中。

  将data-loader去掉

<%if(JQUERY_NOT_INCLUDED){%>
<script type="text/javascript" src="/common/dep/jquery.js"></script>
<%JQUERY_NOT_INCLUDED=false;}%>
<script src="/js/wording.js" type='text/javascript'></script>

  编译结果

<%if(JQUERY_NOT_INCLUDED){%>
<script type="text/javascript" src="/static/pc-dev/common/dep/jquery.js"></script>
<%JQUERY_NOT_INCLUDED=false;}%>
<script src="/static/pc-dev/js/wording.js" type='text/javascript'></script>

  2.3 jsp脚本中有body标签

  刚才在2.2中有body标签的例子说明

  

  2.4 jsp中使用其他需要加载外部文件的情况

  项目中用到imweb-tplv2模板插件。里面的文件一般有.tpl/.js/.css三种.js是入口文件,引用.tpl和.css文件。在jsp中使用的时候fis编译会收集这些js和css,将css文件引用放在head标签纸,js引用放到body中。如果这两个标签没有则会导致这些引用全部没有。

===================================

2019.11.29 后记

本来不准备把这篇文章发布出来的,因为这是早些时候的文章了,当时想着后面会完善,但是后面没有时间和精力,而且当前使用fis3打包的不多了。但是毕竟写了,留个纪念,纪念我曾经用过fis3,后面这篇文章也不会维护了。

fis3打包中的一些注意事项的更多相关文章

  1. unity3d 资源文件从MAX或者MAYA中导出的注意事项

    unity3d 资源文件从MAX或者MAYA中导出的注意事项     1.首先,Unity3d 中,导出带动画的资源有2种导出方式可以选择:    1) 导出资源时,只导出一个文件,保留模型,骨骼和所 ...

  2. delphi中httpencode使用注意事项

    delphi中httpencode使用注意事项 一.uses HTTPApp二.使用前要用UTF8Encode转换成utf-8编码HTTPEncode(UTF8Encode(Text));不然和标准的 ...

  3. 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获

    项目开发中的一些注意事项以及技巧总结   1.jquery采用ajax向后端请求时,MVC框架并不能返回View的数据,也就是一般我们使用View().PartialView()等,只能返回json以 ...

  4. PHP7中session_start 使用注意事项,会导致浏览器刷时页面数据不更新

    //PHP7中session_start 使用注意事项, session_start([ 'cache_limiter' => 'private', //在读取完毕会话数据之后马上关闭会话存储文 ...

  5. 关于myBatis配置中的一些注意事项

    最近在学习mybatis,在网上查阅资料,并按照别人的范例来测试,总会出一些错误,这里把配置过程中的一些注意事项梳理一下. 一.导包(用eclipse开发) 1.如果你新建的是普通的project,需 ...

  6. Servlet中的一些注意事项

    servlet中的一些注意事项 1 什么是servlet? 1)Servlet是Sun公司制定的一套技术标准,包含与Web应用相关的一系列接口,是Web应用实现方式的宏观解决方案.而具体的Servle ...

  7. ios使用jspatch中需要注意的事项

    第一份代码,为了纠正原代码不显示29号的bug,先上代码 require('NSString','MCDatePickType','NSMutableArray','UIButton'); defin ...

  8. iOS开发中xib和Storyboard中需要注意的事项

    使用xib注意事项: 1.只有自带view的控件才可以使用xib,因为它本身就是一个view 2.在使用可视化控件添加属性(代码)时候,如果删除了属性代码,一定要在xib上解除关联(不然会崩溃) 3. ...

  9. Python 打包中 setpy.py settuptools pbr 的了解

    背景 nova服务构建失败,报错: 'tests_require' must be a string or list of strings containing valid project/versi ...

随机推荐

  1. ServerSocket类的常用方法

    1.accept:侦听并接受此套接字的连接:此方法在连接传入之前一直阻塞. 2.setSoTimeout(timeout)方法的作用时设置超时时间,通过指定超时timeout值启用/禁用超时功能,以m ...

  2. 搭建Nginx四层反向代理

    需求背景: 前段时间公司因为业务需求需要部署一个正向代理,我已经分享出来了https://www.cnblogs.com/Dfengshuo/p/11911406.html,现有因架构个更改,需要再加 ...

  3. zabbix获取一周内各个等级告警的次数

    # encoding:UTF-8 import xlsxwriter import datetime import pymysql import numpy as np import pandas _ ...

  4. MySQL数据库~~~~ 完整性约束

    1. not null 与 default not null : 不可空 default : 默认值 例: create table t1(id int not null default 2); 2. ...

  5. SSH的 Write failed: Broken pipe 问题

    问题现象: 表示连接管道已经断开 解决方法: 方法一:客户端配置 在客户端的 ~/.ssh/ config文件(如不存在请自行创建)中添加下面内容: ServerAliveInterval 60 方法 ...

  6. Linux基础 —基础要点

    一.请简述Linux安装时的两个必备分区.挂载点和类型. 一般情况下,安装红旗Linux需要两个必备分区,即一个根文件系统分区,挂载点(/),类型为ext3.ext2或reiserfs:一个交换分区, ...

  7. RN调试坑点总结(不定期更新)

    前言 我感觉,如果模拟器是个人的话,我已经想打死他了 大家不要催我学flutter啦,哈哈哈,学了后跟大家分享下 RN报错的终极解决办法 众所周知,RN经常遇到无可奈何的超级Bug, 那么对于这些问题 ...

  8. java之父类中的构造器是否能被子类继承?

    子类默认继承父类的属性和方法,但不会继承父类的构造器,而是在子类被实例化时会默认调用父类的空构造器.子类在创建的时候会调用自己的空构造器,并在空构造器会隐式调用super(),即父类的空构造器.如果父 ...

  9. BootStrap 关于input与btn的点击focus取消特效相关css

    取消btn按钮点击出现的外边框: .btn:focus, /*清除btn按钮点击出现的边框*/.btn:active:focus,.btn.active:focus,.btn.focus,.btn:a ...

  10. 【NOI 2011】阿狸的打字机

    Problem Description 阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有 \(28\) 个按键,分别印有 \(26\) 个小写英文字母和 B . P 两个字母. ...