我正在使用ECMAScript6模块.从以下选项中导出/导入模块中的多个方法的正确方法是什么?
单类静态方法:
//------ myClass.js ------
export default class myClass {
static myMethod1() {
console.log('foo');
}
static myMethod2(args...) {
console.log('bar');
}
}
//------ app.js ------
import myClass from 'myClass';
myClass.myMethod1(); //foo
Run Code Online (Sandbox Code Playgroud)
多种导出方法:
//------ myMethods.js ------
export function myMethod1() {
console.log('foo');
}
export function myMethod2() {
console.log('bar');
}
//------ app.js ------
import {myMethod1, myMethod2} from 'myMethods';
myMethod1() //foo;
//OR
import * as myMethods from 'myMethods';
myMethods.myMethod1() //foo;
Run Code Online (Sandbox Code Playgroud)
1)导出:一类只是静态方法感觉有点"代码味道",但同样单独导出所有内容确实感觉有点冗长.它只是开发人员偏好还是存在性能影响?
2)导入:'*as'语法是我首选的方法,因为它允许您使用点符号(引用模块和方法)帮助代码可读性.当我可能只使用其中一种方法时,这是否有性能影响?
我的index.html页面中有以下块.
<!-- build:css(.tmp) styles/style.css -->
<link rel="stylesheet" href="bower_components/normalize-css/normalize.css">
<link rel="stylesheet" href="styles/main.css">
<!-- endbuild -->
Run Code Online (Sandbox Code Playgroud)
css文件在我的app结构中正确存在,但是当我运行'grunt build'时,只有styles/main.css中的CSS包含在生成的styles/style.css文件中.
我想我需要告诉Grunt在bower_components目录中查找CSS文件?但我不确定该怎么做?
下面我的gruntfile.js的副本......
grunt.initConfig({
yeoman: yeomanConfig,
watch: {
styles: {
files: ['<%= yeoman.app %>/styles/{,*/}*.css'],
tasks: ['copy:styles', 'autoprefixer']
},
livereload: {
options: {
livereload: LIVERELOAD_PORT
},
files: [
'<%= yeoman.app %>/{,*/}*.html',
'.tmp/styles/{,*/}*.css',
'{.tmp,<%= yeoman.app %>}/scripts/{,*/}*.js',
'<%= yeoman.app %>/images/{,*/}*.{png,jpg,jpeg,gif,webp,svg}'
]
}
},
autoprefixer: {
options: ['last 1 version'],
dist: {
files: [{
expand: true,
cwd: '.tmp/styles/',
src: '{,*/}*.css',
dest: '.tmp/styles/'
}]
}
},
connect: {
options: { …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建一个脚本,它将充当本机XMLHttpRequest对象的代理/包装器,使我能够拦截它,修改responseText并返回原始的onreadystatechange事件.
上下文是,如果应用程序尝试接收的数据已在本地存储中可用,则中止XMLHttpRequest并将本地存储的数据传递回应用程序成功/失败回调方法.假设我无法控制应用程序现有的AJAX回调方法.
我原本试过以下想法..
var send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data){
//Do some stuff in here to modify the responseText
send.call(this, data);
};
Run Code Online (Sandbox Code Playgroud)
但正如我现在所建立的那样,responseText是只读的.
然后我尝试退后一步,编写自己的完整本机代理XMLHttpRequest,最终编写自己的本机方法版本.与此处讨论的相似......
http://www.ilinsky.com/articles/XMLHttpRequest/#implementation-wrapping
但它很快就变得混乱,并且仍然难以将修改后的数据返回到原始onReadyStateChange方法中.
有什么建议?这甚至可能吗?
当使用jQuery submitHandler方法时,我将表单数据通过ajax发布到服务器.成功时,会调用另一个方法来调整弹出窗口的大小并通知用户其全部完成.
然而,我的问题是,在发布数据时,表单再次得到验证,从而导致不良影响.
我的理解是submitHandler不应该再次触发验证?
submitHandler: function(form) {
console.log('test');
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"test"被记录到控制台,但验证再次运行(在这种情况下,对电子邮件地址字段进行服务器端有效性检查).
我正在使用按钮类型提交作为表单元素.我是否需要防止默认或类似的事情?
在 Angular被引导之前,是否可以访问工厂服务的方法,类似于下面的代码?
我需要在Angular启动之前创建一些AJAX请求,以便设置许多全局应用程序变量.我本来希望保留这个逻辑和/或将响应存储在Angular服务中,并返回一个承诺......
<script src="scripts/app.js"></script>
<script src="scripts/factories/app.js"></script>
<script>
angular.element(document).ready(function() {
factoryName.startup().then(function() {
angular.bootstrap(document, ['MyApp']);
}, function(err) {
console.log(error fetching bootstrap data);
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
是否有其他方法可用于获得类似的行为?
javascript ×3
ajax ×1
angularjs ×1
bower ×1
class ×1
css ×1
ecmascript-6 ×1
gruntjs ×1
jquery ×1
module ×1
validation ×1