我已经采用了一些共享代码并将其放入NPM模块中,我不想将其上传到中央注册表.问题是,如何从其他项目安装它?
显而易见的方法可能是建立我自己的NPM注册表,但根据文档,这涉及很多麻烦.
我可以只安装一个位于本地文件系统上的NPM模块,甚至可以安装git吗?
npm install --from-git git@server:project
Run Code Online (Sandbox Code Playgroud) for-in
在JavaScript中编写循环的正确方法是什么?浏览器不会对我在此处显示的两种方法中的任何一种发出投诉.首先,有一种方法,其中x
显式声明迭代变量:
for (var x in set) {
...
}
Run Code Online (Sandbox Code Playgroud)
或者这种方法更自然地读取但对我来说似乎不正确:
for (x in set) {
...
}
Run Code Online (Sandbox Code Playgroud) 注意
鉴于此OP大约两年前编写,而不是再次提出相同的问题,我想知道是否存在分步说明,以便我可以将Noir或其他Clojure Web应用程序集成到Apache中,无论是Jetty,Tomcat , 或者是其他东西.Django也存在类似的指令,我想我明白Python在Django的情况下是作为引擎而不是环形框架运行的,所以Clojure Web应用程序更复杂.
结束注释
我深深爱上了Clojure,而Compojure似乎是一个整洁的Web框架.
但是当我想将我的应用程序部署在像Tomcat这样的常规应用程序服务器上作为WAR时,它就崩溃了.我实际上必须为静态文件和资源编写自定义Ring处理程序,这些文件和资源可以在本地Jetty和Tomcat上运行,因为库存处理程序没有,我不得不手动将上下文根添加到任何地方.
令我感到非常惊讶的是,我必须编写所有这些代码来创建可以在Jetty和Tomcat上运行的最简单的Web应用程序.我只有三种可能的解释:
您认为以下哪一种情况?或者是别的什么?
编辑:
请注意,创建一个战争文件是Maven/Leiningen的明智之举,而不是我的意思.我想知道我必须编写如此多的代码来使Compojure与Tomcat一起工作,基本的东西,如静态文件服务和上下文根知识应该开箱即用.
这可能听起来有点愚蠢,但我实际上有点困惑如何处理Web前端的JavaScript测试.就我而言,典型的3层架构如下所示:
1在这个问题上无关紧要.2包含前端的所有程序逻辑("业务逻辑")3.
我为大多数项目进行测试驱动的开发,但仅针对应用程序逻辑,而不是前端.这是因为在TDD中测试UI很困难且不常见,而且通常没有完成.相反,所有应用程序逻辑都与UI分离,因此测试该逻辑很简单.
三层体系结构支持这一点:我可以将我的后端设计为REST API,由我的前端调用.JS测试如何适应?对于典型的三层架构,JS(即客户端上的JS)测试没有多大意义,是吗?
更新: 我已经将问题的措辞从"在网络前端测试JavaScript"改为"JavaScript网络前端的测试驱动开发"来澄清我的问题.
在Robolectric中模拟按钮单击非常简单:
Button someButton = (Button) findViewById(R.id.some_button);
someButton.performClick();
Run Code Online (Sandbox Code Playgroud)
但是,我似乎无法弄清楚如何用菜单项做同样的事情.我创建了一个菜单Activity.onCreateOptionsMenu
,如何模拟其中一个项目的点击?
在Android中有几种单元测试方法,测试我编写的自定义视图的最佳方法是什么?
我目前正在测试它作为我在仪器测试案例中的活动的一部分,但我宁愿只测试视图,孤立.
我在Android活动和其他类之间遇到越来越多的命名冲突.我想知道你是否可以告诉我你是如何避免这些的.遗憾的是,我在SO的相关问题中没有涉及我的特定命名问题.
第一个例子
我有一个显示游戏级别的活动.但是,该级别所需的数据(背景图片,实体等)存储在单独的类中.当然,我会称之为后一类Level
.但是,我也会调用该活动Level
,因为它显示了级别.
第二个例子
我有一个活动可以播放切割场景.它基本上连续显示几个图像.显示图像显示多长时间的信息存储在单独的类中.和前面的情况一样,我自然会把这两个类都称为CutScene
.
您如何解决这些命名问题?命名活动LevelActivity
和CutSceneActivity
?命名表示类LevelModel
和CutSceneModel
?别的什么?
我喜欢const
在可能的情况下声明偶数值参数,通过搜索SO,我发现这并不常见.像这样:
int add(const int a, const int b)
{
...
}
Run Code Online (Sandbox Code Playgroud)
但我想知道:const
因为值是我的函数的实现细节,而不是它的接口的一部分.因此将它放入原型似乎是不必要的.
这个上述函数的原型似乎工作得很好:
int add(int a, int b);
Run Code Online (Sandbox Code Playgroud)
然而,我听说过一些问题,例如将main函数的argc声明为const会导致问题:
int main(const int argc, const char* const argv[])
Run Code Online (Sandbox Code Playgroud)
这是否意味着,int add(int a, int b)
和int add(const int a, const int b)
终究不是相同?
如果它在技术上还可以,我应该做些什么?我也可以在原型中省略变量名,但我没有,所以也许我也不应该遗漏const
?
最近我开始将越来越多的函数放入头文件中,主要是为了方便起见.但我担心我可能会过度使用它,我的标题充满了包含,我不确定这是不是一个好主意.
将函数移出头文件或将其移入头文件有哪些经验法则?
如果你想知道,我说的是开发应用程序,而不是库.
编辑:
我想从我的角度概述内联(自然)头函数与实现函数的优缺点是有帮助的:
专业内联:
反对内联:
根据这一点,将几乎所有函数放在头文件中似乎是一个好主意,我相信这与STL和Boost正在做的非常接近(尽管这些是库,而不是我的代码).
我创建了一个简单的Win32控制台应用程序,它创建一个隐藏的仅消息窗口并等待消息,完整代码如下所示.
#include <iostream>
#include <Windows.h>
namespace {
LRESULT CALLBACK WindowProcedure(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
if (uMsg == WM_COPYDATA)
std::cout << "Got a message!" << std::endl;
return DefWindowProc(hWnd, uMsg, wParam, lParam);
}
}
int main()
{
WNDCLASS windowClass = {};
windowClass.lpfnWndProc = WindowProcedure;
LPCWSTR windowClassName = L"FoobarMessageOnlyWindow";
windowClass.lpszClassName = windowClassName;
if (!RegisterClass(&windowClass)) {
std::cout << "Failed to register window class" << std::endl;
return 1;
}
HWND messageWindow = CreateWindow(windowClassName, 0, 0, 0, 0, 0, 0, HWND_MESSAGE, 0, …
Run Code Online (Sandbox Code Playgroud) android ×3
c++ ×3
header ×2
javascript ×2
android-view ×1
c ×1
clojure ×1
compojure ×1
const ×1
deployment ×1
for-in-loop ×1
function ×1
ipc ×1
naming ×1
node.js ×1
npm ×1
package ×1
robolectric ×1
syntax ×1
tdd ×1
testing ×1
unit-testing ×1
war ×1
winapi ×1
windows ×1