前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Weex导入图片

Weex导入图片

作者头像
sweet说好的幸福
发布2020-12-23 10:52:00
8930
发布2020-12-23 10:52:00
举报
文章被收录于专栏:sweet_iOS

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

Weex图片资源存在形式?

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

如何选择?

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

如何实现?

各端保存

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

代码语言:javascript
复制
<image src="file:///filename">

服务器

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

代码语言:javascript
复制
<image src="https://img.alicdn.com/tps/TB1z.55OFXXXXcLXXXXXXXXXXXX-560-560.jpg">

Weex工程

1、创建weex工程

代码语言:javascript
复制
weex init WeexImageDemo

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

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

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

代码语言:javascript
复制
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",版本号自己设置,修改后如下:

代码语言:javascript
复制
"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工程图片方法

代码语言:javascript
复制
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方法

代码语言:javascript
复制
import image from './config';

7、在foo中使用

代码语言:javascript
复制
<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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Weex图片资源存在形式?
  • 如何选择?
  • 如何实现?
    • 各端保存
      • 服务器
        • Weex工程
        • 附上demo地址 https://github.com/flypan/loadWeexProjectImage.git
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档