HarmonyOS 鸿蒙Next 鸿蒙js多个实例有公共的资源文件,怎么共用?

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 鸿蒙js多个实例有公共的资源文件,怎么共用? js有多个模块,每个模块里的图片和字符资源只能本模块使用,现在多个模块有很多重复的资源,如果每个模块都重复一遍的话,会增大不必要的包体积,模块之间怎么资源公用?

3 回复

开发者你好,可以引用,示例:

//util.js
var route = [
    {
        "title": "iamges",
        "desc": "图片渲染",
        "uri": "pages/detail1/imageI/imageI",
        "params": {
            "imgSrc": "/common/logo.png",
            "imgWidth": "192",
            "imgHeight": "192"
        }
    },
    {
        "title": "progress",
        "desc": "进度条",
        "uri": "pages/detail1/progress/progressI/progressI",
        "params": {
            "initParams": [
                {
                    "type": "horizontal",
                    "percent": 50
                },
                {
                    "type": "arc",
                    "startAngle": 270,
                    "totalAngle": 180,
                    "center_x": 227,
                    "center_y": 227,
                    "radius": 227,
                    "percent": 50
                }
            ]
        }
    },
    {
        "title": "marquee",
        "desc": "跑马灯",
        "uri": "pages/detail1/marqueeI/marqueeI",
        "params": {}
    },
    {
        "title": "chart",
        "desc": "图表展示",
        "uri": "pages/detail1/chart/chartI/chartI",
        "params": {}
    }
];

var getRouteFromStorage = function () {
    var obj = {
        "currentPage": "",
        "beforePage": ""
    }
    return getObjectFromStorage(obj);
}

var setObjectToStorage = function (obj) {
    Object.keys(obj).forEach((key) => {
        storage.set({
            key: key + "",
            value: obj[key].length == 0 ? " " : obj[key],
            success: function () { },
            fail: function (res, code) {
                console.error("储存失败,error code:" + code + "\t\terror message:" + res)
            }
        })
    })
}

//./imageI/imageI.js
import router from "@system.router"
import { getRouteFromStorage, setObjecctToStorage } from "../util"
export default {
    data: {
        title: 'this is image',
        imgSrc: "/common/logo.png",
        imgWidth: "116",
        imgHeight: "116",
        before: ""
    },
    onInit: function () { },
    back: function () {
        router.replace({
            uri: "pages/detail1/detail1"
        })
    }
}

//detail.js
import router from "@system.router"
import { route } from "./util.js"
const image = require("./imageI/imageI.js").default
export default {
    data: {
        title: "xxx",
        titleShow: route,
        before: ""
    },
    onInit: function () { },
    next: function (item) {
        router.replace({
            uri: item.uri,
            params: item.params
        })
    },
    back: function () {
        router.replace({
            uri: "pages/index/index"
        })
    }
}

更多关于HarmonyOS 鸿蒙Next 鸿蒙js多个实例有公共的资源文件,怎么共用?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙Next中,若你的鸿蒙JS应用中存在多个实例需要共享公共资源文件,可以通过以下几种方式实现资源共用:

  1. 全局资源文件:将公共资源文件放置在全局可访问的路径下,例如应用的根目录或特定的公共资源目录。在各个实例中通过相对路径或全局路径引用这些资源。

  2. 资源模块化:将公共资源封装成模块,然后在需要使用的实例中导入该模块。这样可以确保资源的一致性和可维护性。

  3. 环境变量或配置文件:设置环境变量或配置文件来指定公共资源的位置,各个实例在启动时读取这些配置,从而访问共享资源。

  4. 服务化资源访问:如果资源访问逻辑较为复杂,可以考虑将资源访问封装成服务,各个实例通过调用服务接口来获取所需资源。

在具体实现时,需根据资源的类型(如图片、音频、配置文件等)和访问频率选择合适的共用方式。确保资源路径在各实例中正确配置,且资源文件的访问权限设置合理。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部