Weex导入图片

在Weex开发中不可避免的需要导入图片,在此介绍几种通用方法。

Weex图片资源存在形式?

1、每个客户端保存一份图片资源,统一命名。
2、图片资源保存在服务器上,在渲染Weex页面过程中异步下载图片。
3、保存在weex工程中。这样只需要一份保存,多端使用。

如何选择?

首先看公司氛围,如果客户端够统一,那么可以考虑第一种方式。当然,我推荐第2+第3种方式结合使用,对于图片资源小的图片保存在Weex工程中,方便多端统一,但是只限于较小图片资源,因为图片资源将会以base64的形式保存在打包后的bundlejs中,图片资源过大影响下载速度和解析,并且每次下载bundlejs都需要下载对应图片资源。大的图片资源保存在服务器上,需要的时候异步下载,一般都会有cache。

如何实现?

各端保存

在Vue中以file:///的形式添加,当然获取xcasset文件里面的资源需要麻烦点,网上很多介绍,自问度娘。

<image src="file:///filename">

服务器

在Vue中直接加载图片的地址

<image src="https://img.alicdn.com/tps/TB1z.55OFXXXXcLXXXXXXXXXXXX-560-560.jpg">

Weex工程

1、创建weex工程

weex init WeexImageDemo

2、拷贝图片到Weex工程中,Demo放在了./src下面,文件夹命名为resources
3、修改webpack,在loaders中添加image的模块

{
            test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
            loader: 'url',
            query: {
              limit: 300000,
              name: '[name].[ext]'
            }
 },

其中loader: 'url',表示模块命名, limit: 300000,表示图片资源的最大限制。都是可以自己修改。添加后的代码为:

loaders: [
        {
          test: /\.js$/,
          loader: 'babel',
          exclude: /node_modules/
        }, {
          test: /\.vue(\?[^?]+)?$/,
          loaders: []
        },{
            test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
            loader: 'url',
            query: {
              limit: 300000,
              name: '[name].[ext]'
            }
          },
      ]

4、修改package,在devDependencies中添加"url-loader",版本号自己设置,修改后如下:

"devDependencies": {
    "babel-core": "^6.20.0",
    "babel-loader": "^6.2.9",
    "babel-preset-es2015": "^6.18.0",
    "css-loader": "^0.26.1",
    "ip": "^1.1.4",
    "serve": "^1.4.0",
    "vue-loader": "^10.0.2",
    "vue-template-compiler": "^2.1.8",
    "webpack": "^1.14.0",
    "weex-devtool": "^0.2.64",
    "weex-loader": "^0.4.1",
    "weex-vue-loader": "^0.2.5",
    "url-loader": "^0.5.7"
  }

环境配置完成,下一步就是在Weex中使用,为了方便各个页面调用,将调用方式抽取出来,命名为config.js。
5、在config.js定义加载Weex工程图片方法

const SERVER = "YOUR SERVER IP";
module.exports = {
    // 加载工程中的image
    loadImage(imgName) {
        var image = require('./resources/'+imgName);
        return image;
    },
    // 加载服务器上的image
    image(imgURL) {
        return SERVER + imgURL;
    }
}

6、在foo的script导入config.js方法

import image from './config';

7、在foo中使用

<image class="airport-name-image" :src="imageLoader.loadImage('arrows_right@2x.png')"> </image>
        <image class="airport-name-image" :src="imageLoader.loadImage('ticket_order_notice@2x.png')"></image>

附上demo地址 https://github.com/flypan/loadWeexProjectImage.git

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaS...
    2bc5f46e925b阅读 2,239评论 0赞 16
  • 一、数组方法汇总 shift:删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined var ...
    快抓住那个胖子阅读 378评论 0赞 0
  • js中数组是比较常用的对象,同时js中的数组也十分的灵活。一. 创建数组的方式 字面量数组 var arr=[1,...
    饥人谷_廖珍阅读 675评论 0赞 2
  • 文章如有错误请联系我 anmingzhe@me.com Array.of() 创建数组 参数就是数组参数 Arra...
    安明哲阅读 1,117评论 0赞 9
  • 早上突然想到老妈要好好活着,为了给我争继父的遗产,爸爸那边让我待到筋疲力尽,不想去争一分遗产。一大早就想这么悲伤...
    君_三少阅读 195评论 0赞 0

友情链接更多精彩内容