我正在阅读一篇关于Javascript最佳实践的文章,并且对使用哪种函数结构感到困惑...
我想它可能会对变量和函数的范围产生影响,但是你会使用哪种结构(这被认为是最佳实践)?
结构1:使用对象文字.
var obj1 = {
_myvar : 'myval',
init: function() {
this.function1();
this.function2();
},
function1: function() {
alert('function1');
},
function2: function() {
alert('function2');
}
};
obj1.init();
Run Code Online (Sandbox Code Playgroud)
结构2:将代码包装在自动执行功能中.
(function(){
var _myvar = 'myval',
function1 = function() {
alert('function1');
},
function2 = function() {
alert('function2');
},
init = (function() {
function1();
function2();
}) ();
}) ();
Run Code Online (Sandbox Code Playgroud) 我喜欢Yeoman的功能,如包管理器(Bower),Livereload集成,指南针等.
因此,我想用它来处理我的公共网站.但是,我不想使用"app"文件夹,而是将所有内容放在根目录下.
我已经更改了grunt配置文件中的引用,但在安装新包和构建时仍然会出错.
是否有可能改变项目结构?
我正在尝试创建一个非常简单的 bash 脚本,它执行以下操作:
根据我所读到的内容,我得出了以下结论:
#!/bin/bash
echo "Enter the project folder path:"
read -e DESTINATION_FOLDER
cd "$DESTINATION_FOLDER"
rm -rf "$DESTINATION_FOLDER/readme.md"
Run Code Online (Sandbox Code Playgroud)
我输入的文件夹路径是
〜/ Dropbox / myproject
我得到的错误是下面的错误。但是该文件夹存在,我可以使用 cd 命令手动访问它。
./cleanup.sh: line 6: cd: ~/Dropbox/myproject/: No such file or directory
Run Code Online (Sandbox Code Playgroud)
谁能指出我做错了什么?
使用PHP,我将查询结果导出为CSV.当数据包含重音时我的问题出现了; 它们未正确导出,我在生成的文件中丢失了所有内容.
我使用该utf8_decode()
函数手动转换标题,它工作得很好,但我不知道如何将它用于结果数组.
任何人都可以帮帮我!?
result = db_query($sql);
if (!$result) die('Couldn\'t fetch records');
$fp = fopen('php://output', 'w');
if ($fp && $result) {
header("Content-type: application/vnd.ms-excel; charset=UTF-8");
header('Content-Disposition: attachment; filename="adp_enigmes_data.csv"');
header('Pragma: no-cache');
header('Expires: 0');
fputcsv($fp, $headerTitles);
while ($row = $result->fetch_array(MYSQLI_NUM)) {
// When I use utf8_decode here, I don't get any results, so I have
// no idea where to use it!
fputcsv($fp, utf8_decode(array_values($row)), ',', '"');
}
die;
}
Run Code Online (Sandbox Code Playgroud) 只是想知道它是否是一个很好的JavaScript实践.
假设我有许多网页都调用了初始化函数"init()",在我的模式中使用IIFE在每次加载脚本时运行函数是否正确?
var foo = (function() {
var bar = "something";
(function init() {
// Do something crazy that's gonna be the same across all my web pages
// like adding an event listener or something
// ...
document.write('page init...');
}());
function privatePage1() {
// This stuff is gonna be used only in page1.html via foo.privatePage1
document.write('page 1' + bar);
}
function privatePage2() {
// This stuff is gonna be used only in page2.html via foo.privatePage2
document.write('page 2' …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Modernizr(YepNope)加载动态生成的Google字体样式表,但始终会收到此错误:
未捕获的SyntaxError:意外的标记ILLEGAL(css:1)
我的样式表看起来像这样:
http://fonts.googleapis.com/css?family=Holtwood+One+SC
Run Code Online (Sandbox Code Playgroud)
而我正在通过它来称呼它
Modernizr.load({
load: ['css!http://fonts.googleapis.com/cssfamily=Holtwood+One+SC|Terminal+Dosis:700'],
callback:
function (url, result, key) {
console.log('loaded...!');
}
});
Run Code Online (Sandbox Code Playgroud)
该网站说这个,但由于某种原因它只是不起作用.我认为资源被解析为脚本文件,这是导致错误的原因,但似乎无法使其工作=(
"使用css!前缀,您可以将其添加到任何文件名中,并且yepnope会将其视为css文件."
有人取得了类似的成功吗?谢谢!
我想知道这两种模式之间的区别是什么.
我可能会弄错,但他们似乎使用相同的结构来实现更大级别的代码.
门面图案:
var mobileEvent = {
// ...
stop: function (e) {
e.preventDefault();
e.stopPropagation();
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
对象文字:
var myObject = {
property1:"something",
property2:"something else",
method1:function(){
console.log('hello world');
}
};
Run Code Online (Sandbox Code Playgroud)
如果它们真的用于不同的目的,我应该何时使用它们?
我有一个具有此行为的按钮:点击后它会消失; 然后一条小信息淡入几秒钟,淡出并再次出现按钮.
为了显示小消息,我在隐藏按钮后追加了一个元素,但是一旦消失了就需要将它从DOM中删除.但是,只要我在链中使用remove(),元素就会被删除,永远不会出现fadeIn/fadeOut!
// the button is generated dynamically
$('#myButton').live('click', function() {
$(this)
.fadeOut() // once clicked, the button disappears
.after('<small style="display:none;">Dans panier</small>') // append the message after the button
.next('small').fadeIn() // fade the new small message for a smooth effect
.delay(1000) // leave it visible for a second...
.fadeOut() // then fade it out
.remove() // <-------- normally I would have remove it here from the DOM because it should be hidden, but the remove() method seems to be …
Run Code Online (Sandbox Code Playgroud) 大家好!
我试图在用户mouseOver元素时启动一个计时器并在mouseOut上停止它.元素是动态创建的,这是使用live方法的原因.
所以我的计时器正确启动,但我无法阻止它!怎么了?
$elems.live('mouseover mouseout', function(event) {
var self = $(this), i = 0;
if (event.type == 'mouseover') {
var timer = setInterval(function() {
// change the src of the current element for an element of an array of src, much like in a slideshow
self.attr('src', tabSrc[i]);
i === 2 ? i = 0 : i++;
}, 1000);
}
// Handle the mouseOut
else {
// stop the timer <------ when I mouseOut the element, this doesn't seems to work... …
Run Code Online (Sandbox Code Playgroud)