我正在尝试使用RequireJS 2.0.1.我的目标是正确加载jQuery,Underscore和Backbone.从最初的RequireJS文档中我发现作者J. Burke(在这个新版本中)添加了一个名为shim的新配置选项.
然后我在这里写下这些东西:
index.html
<!DOCTYPE html>
<html>
<head>
<title>Testing time</title>
<script data-main="scripts/main" src="scripts/require.js"></script>
</head>
<body>
<h1>Testing time</h1>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
scripts/main.js
requirejs.config({
shim: {
'libs/jquery': {
exports: '$'
},
'libs/underscore': {
exports: '_'
},
'libs/backbone': {
deps: ['libs/underscore', 'libs/jquery'],
exports: 'Backbone'
}
}
});
define(
['libs/jquery', 'libs/underscore', 'libs/backbone'],
function (jQueryLocal, underscoreLocal, backboneLocal) {
console.log('local', jQueryLocal);
console.log('local', underscoreLocal);
console.log('local', backboneLocal);
console.log('global', $);
console.log('global', _);
console.log('global', Backbone);
}
);
Run Code Online (Sandbox Code Playgroud)
一切似乎工作得很好,但我觉得我缺少一些东西,我知道有jed和Underscore的AMD版本,但如果设置如此简单,我不明白为什么我应该使用它们.
那么,这个设置是正确的还是我错过了什么?
我正在尝试学习Lisp,但是我被这个例子困住了(你可以在"ANSI Common Lisp"上找到它,Paul Graham,第170页):
(defmacro in (obj &rest choices)
(let ((insym (gensym)))
`(let ((,insym ,obj))
(or ,@(mapcar #'(lambda (c) `(eql ,insym ,c))
choices)))))
Run Code Online (Sandbox Code Playgroud)
格雷厄姆然后说:
如果第一个参数的第一个参数是任何其他参数,则
in返回第二个宏[...] .我们可以写成的表达式:trueeql
(in (car expr) '+ '- '*)
Run Code Online (Sandbox Code Playgroud)
否则我们不得不写作
(let ((op (car expr)))
(or (eql op '+)
(eql op '-)
(eql op '*)))
Run Code Online (Sandbox Code Playgroud)
当我写的下面的函数看起来行为方式相同时,为什么我应该写一个宏?
(defun in-func (obj &rest choices)
(dolist (x choices)
(if (eql obj x)
(return t))))
Run Code Online (Sandbox Code Playgroud)
我不明白我是否遗漏了某些东西,或者在这种情况下,in-func相当于in.
我学习Haskell 伟大的好.
我很喜欢OOP和各种类型的系统.我用Java开发webapps(Java EE,spring,Hibernate,struts 1.x),现在我经常使用Python(pylons,django,sqlalchemy,pymongo)和Javascript.我的个人生产力有了很大的提高:轻量级方法,鸭子打字,很棒的迭代器,作为一等公民的功能,简单的语法和配置,快速工具pip和distribute(以及更多)帮助了我很多.
但是提高生产力的第一个原因是Python语言本身.
使用Haskell进行Web开发有哪些主要好处?例如,它的类型推断如何真正改善我的网络应用程序?到目前为止,我注意到当你用你的类型签名装饰你的函数时,你会为你的程序添加很多语义.我希望所有这些努力都能以某种方式回归,以保存许多行代码并使其发声.我真的很喜欢类型和数据之间的明显区别,我开始明白它们是如何工作的,但我想要一些东西:P
不要误会我的意思,我刚刚开始研究Haskell,所以Maybe我错过了一些真棒,但我真的想要了解它的范例以及它何时值得使用它.
我正在使用Django,Celery和Django-Celery.我想监控我的任务的状态/结果,但我对如何做到这一点感到有些困惑.
我用./manage.py celeryev,./manage.py celerymon,./manage.py celerycam?我跑sudo /etc/init.d/celeryevcam start吗?
我试图用base58是进口的buffer。我已经安装了两个:
并将它们添加到插件列表中,但缓冲区似乎未定义。老实说,我不完全确定我在这里做什么,使用这两个废弃的包似乎比预期的要复杂。
如果需要,我可以提供一个示例,但也许这很简单,已经有一个简单的答案。
我rollup.config.js的如下(我删除了一些不重要的部分):
import alias from "@rollup/plugin-alias";
import copy from "rollup-plugin-copy";
import json from "rollup-plugin-json";
import globals from "rollup-plugin-node-globals";
import builtins from "rollup-plugin-node-builtins";
import svelte from "rollup-plugin-svelte";
import resolve from "rollup-plugin-node-resolve";
import replace from "@rollup/plugin-replace";
import commonjs from "rollup-plugin-commonjs";
import livereload from "rollup-plugin-livereload";
import { terser } from "rollup-plugin-terser";
// ...
export default [
{
input: "src/background/",
output: {
sourcemap: true,
format: "iife",
name: "background",
file: "build/background/bundle.js"
},
plugins: [
builtins(), …Run Code Online (Sandbox Code Playgroud) 我在Python 2和3中注意到了这种行为:
>>> id(lambda: 1) == id(lambda: 2)
True
Run Code Online (Sandbox Code Playgroud)
它们也共享相同的哈希值.
>>> hash(lambda: 1) == hash(lambda: 2)
True
Run Code Online (Sandbox Code Playgroud)
我期望两个lambda函数有两个不同的 id s和hashes.
我调查了更多,并在返回闭包时发现了类似的行为:
>>> def foo(n):
... def bar():
... return n
... return bar
...
>>> id(foo(1)) == id(foo(2))
True
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我认为它id是相同的,因为返回的函数完全相同,而正在改变的只是封闭范围.
有什么类似的lambda功能发生?