找回密码
 立即注册

QQ登录

只需一步,快速开始

Shawn.Liu 活字格认证
超级版主   /  发表于:2024-10-25 11:29  /   查看:258  /  回复:0
本帖最后由 Shawn.Liu 于 2024-10-30 15:27 编辑

在插件开发中,通过插件生成工具都会生成默认配置信息PluginConfig.json(PluginConfig.json - 活字格V10帮助文档 (grapecity.com.cn)),这篇帖子关注的是在实际开发中bundleCSS属性为true和false的对比。

帮助文档中的描述如下:
image.png894498290.png
如果还不太理解,相信看完下面格友的例子会增加一些印象,且听我慢慢道来......

格友需要开发一个前端插件,其中使用到了 Font Awesome一款流行的图标字体库,用于网页设计和开发包含了一系列矢量图标,可以轻松地通过 CSS 进行调用和使用),使用方式比较简单,大家可以参考官网或者菜鸟教程等途径了解,比如下面是一个最小的例子(使用V4版本,可选的图标包括:Font Awesome Icons )。
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/4.7.0/css/font-awesome.css">
  5. </head>
  6. <body>

  7. <i class="fa fa-car"></i>
  8. <i class="fa fa-car" style="font-size:48px;"></i>
  9. <i class="fa fa-car" style="font-size:60px;color:red;"></i>

  10. </body>
  11. </html>
复制代码
实际在浏览器运行的效果如下,显示三组小车的图标,由此可见只需将想要的图标class引入到html代码中即可实现。
image.png15589293.png
参考菜鸟教程中的描述,引入font-awesome.css文件的方式除了上面的CDN链接的方式,还可以下载该库到本地后引用,格友正式服务器属于内网环境,所以后者是一个比较不错的方案,类似下面这样:
image.png872896423.png
image.png301096495.png

以上是模拟格友的场景,本地调试效果如下,显示没有问题:
image.png451554259.png

此时发布到服务器访问应用后图标加载异常,打开网络请求,部分字体的请求报404,对应路径下找不到资源;
image.png612828063.png

那么为什么我本地调试时是正常的,发布到服务器就异常了呢,这个可能是一些格友常有的疑问?我们再去源代码下找一些看是否能找到一些线索;
image.png694250487.png

对比本地调试时的截图可以发现,插件下的目录结构不像我们在IDE或者调试时展示的那样,原因看起来是因为在使用 fa、fa-car 这类的css样式时,FontAwesome库底层需要加载一些字体资源后才可以正常展示,而现在根据 url('../fonts/fontawesome-webfont.woff2?v=4.7.0') 将无法找到原有的字体资源;

回到我们刚开始时教程中对 bundleCss 属性的描述,"发布活字格应用后是否对css属性中声明的 css 文件进行压缩打包",那么在这个插件背景下我们不应该将Css文件进行压缩打包到 FGC_Resource 目录中,而是按照IDE的目录结构发布到服务器,以便根据相对路径在找字体资源时可以找到,我们更新一下bundleCSS属性为false,重新编译生成解决方案,替换原工程中的插件后发布到服务器;
  1. {
  2.   "assembly": [
  3.     "FontAwesome.dll"
  4.   ],
  5.   "css": [
  6.     "Resources/font-awesome-4.7.0/css/font-awesome.css"
  7.   ],
  8.   "javascript": [
  9.     "Resources/FontAwesomeCellType.js"
  10.   ],
  11.   "serverApiAssembly": [],
  12.   "image": "Resources/PluginLogo.png",
  13.   "description": "这是一个活字格上传插件",
  14.   "name": "上传插件",
  15.   "pluginType": "cellType",
  16.   "guid": "f295b223-969d-4c15-b437-636ed67de95c",
  17.   "version": "1.0.0.0",
  18.   "dependenceVersion": "10.0.5.0",
  19.   "bundleJavaScript": true,
  20.   "bundleCSS": false
  21. }
复制代码
image.png437747191.png

此时,发布到服务器之后图标不显示的问题就可以解决了,大家如果也偶然遇到该类的问题可以参考这种方法处理,当然bundleJavaScript也是相同的原理。


0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部