我正在尝试创建一个全局可用的mixin,但不会自动注入到每个组件中.即我不想要这个:Vue.mixin({...});
我按照这些说明设置了项目.这是我的项目结构.我也assets/js/mixins.js有包含我的mixins的文件.
我希望能够在我的个人.vue文件中执行此操作(我的许多组件都使用myMixin但不是全部):
<script>
export default {
mixins:[myMixin],
data:{....}
}
</script>
<template>
<!-- some template code -->
</template>
Run Code Online (Sandbox Code Playgroud)
到目前为止,唯一的方法是将此行添加到需要它的每个组件的顶部:
import {myMixin} from './assets/js/mixins.js"
Run Code Online (Sandbox Code Playgroud)
但有没有办法做到这一次,并在myMixin全球范围内提供变量?我已尝试将其包含在内main.js和中app.vue但如果我尝试myMixin在任何子组件中使用,我仍然会得到"myMixin未定义"错误.
或者是否有另一种注册mixin的方法,不需要我mixins.js在每个组件中键入文件的路径?
我有一个actions.js文件导出这样的动作
export var toggleTodo = (id) => {
return {
type: 'TOGGLE_TODO',
id
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用es6导入它时,我得到错误
Uncaught TypeError: Cannot read property 'toggleTodo' of undefined
Run Code Online (Sandbox Code Playgroud)
但当我需要它使用常见的js要求它工作得很好!有人可以向我解释为什么会发生这种情况,我的意思是我读到这两个是相同的事情......似乎有些不同?
// var actions = require('actions') working
// dispatch(actions.toggleTodo(id));
import actions from 'actions' //not working
dispatch(actions.toggleTodo(id));
Run Code Online (Sandbox Code Playgroud) 使用ES6模块语法导出返回类Typescript实例的工厂函数时,会产生以下错误:
错误TS4060:导出函数的返回类型具有或正在使用私有名称"路径".
来自paths.ts:
//Class scoped behind the export
class Paths {
rootDir: string;
constructor(rootDir: string) {
this.rootDir = rootDir;
};
};
//Factory function: returns instances of Paths
export default function getPaths(rootDir:string){
return new Paths(rootDir);
};
Run Code Online (Sandbox Code Playgroud)
这个合法的ES6 javascript.但是,我发现的唯一工作就是出口课程.这意味着当它被编译到ES6时,正在导出类,从而无法在模块中确定范围.例如:
//Class now exported
export class Paths {
rootDir: string;
constructor(rootDir: string) {
this.rootDir = rootDir;
};
};
//Factory function: returns instances of Paths
export default function getPaths(rootDir:string){
return new Paths(rootDir);
};
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?在我看来,这个模式应该由打字稿支持,特别是在ES6编译中,模式变得更加突出.
我正在创建一个节点包来处理 cookie。从下面的类中导出静态类方法的最佳方法是什么?
export default class Cookies {
static get (name) {...}
static set (...) {...}
static remove (...) {...}
}
Run Code Online (Sandbox Code Playgroud)
那么是否可以像这样导入它们,因此人们如果不需要它就不必导入 remove 方法?
import { get, set } from "Cookies"
在ES6中我可以导出一个简单的foo常量:
export const foo = 1;
Run Code Online (Sandbox Code Playgroud)
我还可以将该export(1)的值转换为变量,并导出:
const fooValue = 1;
export foo = fooValue;
Run Code Online (Sandbox Code Playgroud)
但我的问题是,有什么办法可以将export()的键转换foo为变量:
const fooLabel = 'foo';
const fooValue = 1;
export something(fooLabel) = fooValue;
Run Code Online (Sandbox Code Playgroud)
或者导出总是必须明确命名?
在当前的webpack项目中,我的代码被分区为模块,每个模块都有一个带有.module.js结尾的主入口点.例如,对于模块Util,入口点是util.module.js,我通过写入将其包含在其他模块中import util from 'modules/util/util.module.js'
但是,由于所有模块的入口点语法都相同,我宁愿避免指定条目的完整文件名.例如,如果我能写的话会很好import util from 'modules/util'.
我知道这有用,如果util.module.js是名字index.js,但我怎么能告诉Webpack以同样的方式获取我当前的模块条目?
javascript ecmascript-6 webpack es6-module-loader es6-modules
在尝试移植我们的一些 JS 代码以使用模块时,我遇到了这个我无法解释的特殊情况。我正在设置我的主要 JS 文件,以便为我的主要入口点进行动态导入,然后他们又为他们需要的所有文件进行导入。设置如下所示:
索引.js
(async function () {
await import('./firstLevel1.js');
await import('./firstLevel2.js');
})()
Run Code Online (Sandbox Code Playgroud)
第一层1.js
(async function () {
await import('./secondLevel1.js');
await import('./secondLevel2.js');
})()
Run Code Online (Sandbox Code Playgroud)
第一层2.js
(async function () {
await import('./secondLevel3.js');
await import('./secondLevel4.js');
})()
Run Code Online (Sandbox Code Playgroud)
由于我导入的某些代码是遗留代码,因此我将 index.js 的脚本标记设置为 async="false" 以确保所有文件都以正确的顺序加载。在这个特定的例子中,我希望加载顺序是 index.js、firstLevel1.js、secondLevel1.js、secondLevel2.js、firstLevel2.js。secondLevel3.js 最后是 secondLevel4.js。但是当我查看 chrome 中的加载顺序时,这就是我所看到的。
这对我来说变得有问题,因为 JS 加载的顺序不是我想要正确设置旧文件的顺序。
为什么我看到的加载顺序与我预期的不同?有没有办法让它们同步加载?
我正在尝试将我的项目迁移到ES6模块,但我遇到了一个问题.
我有第三方脚本,在requirejs的帮助下使用模块.我们将其命名为3rdParty.js.它是通过凉亭获得的,因此没有能力并希望更新它.
有没有办法导入3rdParty.js,使用ES6语法而不从文件中删除定义函数?
javascript commonjs requirejs ecmascript-6 es6-module-loader
是否有人能够解释ES6模块加载器(或Polyfills,如System.js,Webpack等)的简单import和System.import声明之间的区别
就像是
System.import('https://code.jquery.com/jquery.js').then();
Run Code Online (Sandbox Code Playgroud)
似乎是可能的,也是一种简单的
import 'jquery';
Run Code Online (Sandbox Code Playgroud)
是否System.import有import语句后回调的唯一可能性?
javascript ecmascript-harmony ecmascript-6 es6-module-loader
可以var merge = require('lodash').merge用ES6 做点什么吗?
希望有类似的东西import {lodash.merge as merge} from 'lodash'.
ecmascript-6 ×7
javascript ×7
es6-modules ×4
webpack ×3
commonjs ×1
es6-class ×1
requirejs ×1
typescript ×1
vue.js ×1