我已经在stackoverflow中提到了所有问题.但没有提出为什么以及何时使用默认导出. 我刚看到默认值可以提到“当文件中只有一个导出时” 在es6模块中使用默认导出的任何其他原因?解决方法:一些差异可能会让您选择一个而不是另一个: 命名出口 >可以导出多个值>导入时必须使用导出的名称 默认导出 >导出单个值>导入时可以使用任何名称 This article很好地解释了什么时候使用一个优于另一个是个好主意.
想象一下,有人在他的浏览器地址栏中键入了http://example.com/somepage#someanchor.我怎么能拦截这个对锚点的调用,正常显示页面(不要滚动到锚点)并在javascript中做一些事情,比如警告’someanchor’.所有的js,没有服务器端重定向(像某个页面?锚= someanchor). 有任何想法吗?这有可能吗?我可以很容易地拦截对锚点的点击,但这不是这种情况.解决方法:拦截它很容易(从你的onload处理程序调用):function getHash() {var hash = wind...
我正在创建一个可以在各种网站上使用的脚本.由于我不知道它的使用情况,我希望能够将它放在各种沙箱中,它不会影响页面上的其他javascripts,反过来也不受其他javascripts的影响. 最基本的开始是使用自调用功能:(function(){x = function(){ alert('hi!');x(); })();但我的问题是,如果已经分配了x,那么你不能覆盖它:x = function(){ alert('too late!'); (function(){x = function(){ alert('hi!');x(); })();这会警告“太迟了!”而...
Javascript中的破坏性和非破坏性方法是否有任何良好的命名约定?在ruby中有!在方法之后,但JS语法不允许它.解决方法:不,我从未遇到任何问题. 例如,Array.splice()方法具有破坏性,而Array.slice()方法则不具有破坏性.除非您查阅文档,否则您不知道哪个是哪个.
我正在尝试在Grunt中为个人模板创建自定义init任务. 这是在一个grunt init:mytemplate之后生成我的新项目的jsexports.description = 'Try Grunt'; exports.warnOn = '*';exports.template = function(grunt, init, done) {grunt.helper('prompt', {type: 'skin'}, [grunt.helper('prompt_for', 'name', 'trygrunt'),grunt.helper('prompt_for', 'title', 'Im Trying GruntJS'),grunt.helper('prompt_for', 'author_name', 'Myself...
我想创建自己的命名空间,比如$for JQuery(function(app) {app.fn.log = function(data) {console.log(data);};}(app));app.log("data");但是此代码返回错误 – 未捕获的ReferenceError:app未定义 如何创建自己的命名空间?解决方法: window.app = {};(function(app) {app.log = function(data) {console.log(data);}; }(app));app.log("data");jQuery与它的fn略有不同:因为你使用$(‘selector’)语法来查找你需要处理的元素jQuer...
为简单起见,我已经包含了一个脚本,它通过名称动态调用函数:var foo = "hello"; var bar = "world"; var function_name = "say_" + foo + bar;// Since its name is being dynamically generated, always ensure your function actually exists if (typeof(window[function_name]) === "function") {window[function_name](" World!"); } else {throw("Error. Function " + function_name + " does not exist."); }function say_h...
我目前正在使用以下模式在Javascript中创建名称空间和单例对象:var Namespace = function () {var priv = {privateVar1: '',privateVar2: '',privateFunction1: function () {//do stuff[...]},[...]};var pub = {publicVar1: '',publicFunction1: function () {//do stuff with private functions and variablespriv.privateVar1 = priv.privateFunction1(pub.publicVar1);[...]},[...]};return pub; }();我希望你明白这个主意.有...
我刚刚开始使用sequelize但是我有一个小问题映射现有数据库. 默认情况下,sequelize会创建两个名为createdAt和updatedAt的数据时间列,是否有人知道是否可以将列重命名为其他内容.例如…products: sequelize.define('products', {timestamps: false,product_id: {type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true},product_name: Sequelize.STRING,product_description: Sequelize.TEXT,product_created: Sequelize....
我一直在我的node.js模块中使用一个模式,这对我来说是显而易见的,我认为它一定有问题,或者我会看到更多的人这样做.为了保留模块全局的私有变量,我只需将它们作为属性附加到模块对象上.像这样:module.exports = {init: function() {module.someClient = initializeSomethingHere()},someMethod: function(done) {module.someClient.doSomething(done)} }这似乎比我这样的东西更好……var someClient;module.exports = {init: funct...
我有以下内容:<!-- group clone //--> <div class="section"><div class="parent row infoOn"><div class="validGroup"><a title="remove" class="iconClose" href="#">remove</a><div class="grouping"><div class="clearfix valid"><label>Name<span class="iconReq"> </span>:</label><input type="password" class="text inpButton" name="items[0].first"></div><div class="clearfix"><label>Email<span class="iconReq"> <...
在我知道更好之前,我曾经将我的指令定义为:... inputs: ['onOutside' ] ... export class ClickOutsideDirective {@Output() onOutside: EventEmitter<any> = new EventEmitter(); }但后来我读了样式指南,它说你不应该在输出前加上,因为Angular 2支持模板中的on语法. 所以我试图将其改为:@Input() outsideClick: any; @Output() outsideClick: EventEmitter<any> = new EventEmitter();但是,如果不允许使用on前缀,我发现很难将@I...
参考Google JavaScript Style Guide和代码风格 1. 常量 关于常量,大部分语言的命名风格都比较类似,都是全部大写字母,单词用下划线分隔 //常数 const NUMBER = 5;2. 枚举 枚举名称的UpperCamelCase(大驼峰)即每个单词首字母大写,通常应该是单数名词。枚举中的单个项目以CONSTANT_CASE。命名 。3. 变量 写入非常量字段名称(静态或其他)采用lowerCamelCase(小驼峰),私有字段的尾部下划线。 这些名称通常是名词或名词短语。例...
Javascript由于没有命名空间的概念,所以好多的框架或库就用了某些“命名空间”的技巧。在学习作为函数的命名空间时,我翻阅了好多的书本和blog,很多的概念和说明都是要么过于烦杂或过于简单。现在由我来进行一个的系统的描述和介绍。 一、浏览器启动后的初步理解 1.我们要上网,就要打开浏览器,输入网址,浏览器就负责渲染和相应用户的鼠标动作。而打开浏览器这个进程后,浏览器的网络线程负责解析网址为ip地址,去网页服务器下...
前言 变量的命名相对而言没有太多的技术含量,今天整理有关于变量命名相关的规则,主要是想告诉大家,虽然命名没有技术含量,但对于个人编码,或者说一个团队的再次开发及阅读是相当有用的。良好的书写规范可以让你的JavaScript代码更上一个台阶,也更有利于团队的再次开发和阅读代码。 一个老项目中的命名,不到十行代码,竟然包含了各种命名方法:全名原则变量名区分大小写,允许包含字母、数字、美元符号($)和下划线,但第一个字...