util.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import config from '../../libs/config/config';
  2. // 定义高阶函数
  3. function once(fn) {
  4. let called = false;
  5. let result;
  6. return function(...args) {
  7. if (!called) {
  8. result = fn.apply(this, args);
  9. called = true;
  10. }
  11. return result;
  12. };
  13. }
  14. // 使用高阶函数
  15. const loadFont = once(() => {
  16. // console.log('这个函数只能执行一次');
  17. // #ifdef APP-NVUE
  18. // nvue通过weex的dom模块引入字体,相关文档地址如下:
  19. // https://weex.apache.org/zh/docs/modules/dom.html#addrule
  20. const domModule = weex.requireModule('dom');
  21. domModule.addRule('fontFace', {
  22. 'fontFamily': "uicon-iconfont",
  23. 'src': `url('${config.iconUrl}')`
  24. });
  25. if (config.customIcon.family) {
  26. domModule.addRule('fontFace', {
  27. 'fontFamily': config.customIcon.family,
  28. 'src': `url('${config.customIcon.url}')`
  29. });
  30. }
  31. // #endif
  32. // #ifdef APP || H5 || MP-WEIXIN || MP-ALIPAY
  33. uni.loadFontFace({
  34. global: true, // 是否全局生效。微信小程序 '2.10.0'起支持全局生效,需在 app.vue 中调用。
  35. family: 'uicon-iconfont',
  36. source: 'url("' + config.iconUrl + '")',
  37. success() {
  38. // console.log('内置字体图标加载成功');
  39. },
  40. fail() {
  41. // console.error('内置字体图标加载出错');
  42. }
  43. });
  44. if (config.customIcon.family) {
  45. uni.loadFontFace({
  46. global: true, // 是否全局生效。微信小程序 '2.10.0'起支持全局生效,需在 app.vue 中调用。
  47. family: config.customIcon.family,
  48. source: 'url("' + config.customIcon.url + '")',
  49. success() {
  50. // console.log('扩展字体图标加载成功');
  51. },
  52. fail() {
  53. // console.error('扩展字体图标加载出错');
  54. }
  55. });
  56. }
  57. // #endif
  58. // #ifdef APP-NVUE
  59. // if (this.customFontFamily) {
  60. // domModule.addRule('fontFace', {
  61. // 'fontFamily': `${this.customPrefix}-${this.customFontFamily}`,
  62. // 'src': `url('${this.customFontUrl}')`
  63. // })
  64. // }
  65. // #endif
  66. return true;
  67. });
  68. let fontUtil = {
  69. loadFont
  70. }
  71. export default fontUtil