javascript - 如何将 Vue .prototype 迁移到单独的文件

标签 javascript vue.js

我有几个函数要放在 Vue .prototype 中 但我不想弄乱 main .js 我试过像这样移植原型(prototype)

//main.js
import "./vue-extensions/prototypes";

//prototypes.js
import Vue from "vue";
export default new Vue.prototype({
    $appName = "myName",
});

但是使用这个我有一个错误 ` ERROR 编译失败,出现 1 个错误 6:35:11 PM ./src/vue-extensions/prototypes.js 中的错误

语法错误:D:\Projects\FrontEnd\gta\src\vue-extensions\prototypes.js:意外 token (3:19)

1 |从“vue”导入 Vue; 2 |导出默认的新 Vue.prototype({

3 | $appName = "myName",

@./src/main.js 14:0-37 @multi (webpack)-dev-server/client?http://192.168.3.200:8080&sockPath=/sockjs-node (webpack)/hot/dev-server.js ./src/main.js`

最佳答案

嗯,语法错误 - 对象字面量中的赋值语句。

你不想实例化任何东西,所以不要使用new 。您不想导出任何可以在 main 中导入的内容,因此不要使用 export default。只需将修改原型(prototype)对象的代码放入模块中即可:

//prototypes.js
import Vue from "vue";

Vue.prototype.$appName = "myName";
Vue.prototype.$assetsResolution = document.body.clientWidth * devicePixelRatio <= 1920 && document.body.clientHeight * devicePixelRatio <= 1080 ? 1080: 2160

另一种方法可以更清楚地说明发生了什么(因为扩展您不拥有的原型(prototype)对象通常是一种不好的做法),仍然是在 main.js 中进行赋值,但在单独的模块中定义所有值:

//main.js
import prototypeExtensions from "./vue-extensions/prototypes";

Object.assign(Vue.prototype, prototypeExtensions);
//prototypes.js
import Vue from "vue";

export default {
    $appName: "myName",
    $assetsResolution: document.body.clientWidth * devicePixelRatio <= 1920 && document.body.clientHeight * devicePixelRatio <= 1080 ? 1080: 2160,
};

关于javascript - 如何将 Vue .prototype 迁移到单独的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67548533/

相关文章:

javascript - 如何解决Uncaught ReferenceError : bus is not defined? (vue.js 2)

javascript - 如何在 Javascript 中读取 JSON(服务器响应)?

javascript - 向 Jint 公开特定 namespace

php - 将数据库日期格式化为 AM/PM 时间 (vue)

javascript - 在 vue.js 中集成谷歌地图

javascript - VueJS 在渲染函数调用中将 props 传递给子级

javascript - 在 JS 中对同一个节点多次使用 appendChild

javascript - onclick 打印事件中存在多个事件

javascript - Vue.js 单元测试最佳实践

javascript - Vue v-bind 条件本地文件