我正在编译文件并获得编译代码,但注释似乎完全被忽略了; 没有警告没有错误.使用calcdeps.py使用以下命令编译我的代码:
set calc="D:\software\closure compiler\library\closure\bin\calcdeps.py"
c:\Python27\python.exe %calc% ^
--path D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\ ^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\mmt\Mediator.js ^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\mmt\DomDependent.js ^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\mmt\WorkFlow.js ^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\mmt\Messenger.js ^
--input D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\mmt\data.js ^
--compiler_jar "D:\software\closure compiler\compiler.jar" ^
--output_mode compiled ^
--compiler_flags="--compilation_level=ADVANCED_OPTIMIZATIONS" ^
--compiler_flags="--formatting=PRETTY_PRINT" ^
--output_file D:\flex_sdk_4.6\projects\EnglishConverter\bin\js\main.js
pause
Run Code Online (Sandbox Code Playgroud)
例如在Messenger.js中我有一个函数:
/**
* Replaces words in matches with a yes/no/all box
* @param {Array} matches contains the items of myApp.data that matched words in text
* @param {string} text contains the cleaned up user input (no html)
*/
myApp.Messenger.builtReplacewithOptions=function(matches,text){
Run Code Online (Sandbox Code Playgroud)
变量matches必须是一个Array,所有调用此函数的代码都使用Array调用它.要测试类型检查,我将Array更改为字符串,如下所示: …
我有一个用于用户输入的contenteditable div,当点击一个按钮时,它显示替换某些单词的选项.首先,它剥离所有html并创建可以替换单词的span元素.这些词的标记是不同的,我面临一些问题.
但它看起来有点奇怪.所以我的问题是:
是否有一种简单的方法可以将一个span元素锁定在一个contenteditable中,不涉及捕获key和preventDefault(尚未尝试过,甚至不确定它是否可行)?
当单击或直接移动光标旁边的光标并键入文本时,它将成为跨度的一部分,有没有办法让它成为跨度的一部分?填充跨度 可能有效,但当跨度是该行的第一个单词时,它看起来很奇怪.为了说明这一点,我在下面发布了一个示例html文件:
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Example</title>
</head>
<body>
<div contenteditable="true"></div>
<script type="text/javascript">
document.getElementsByTagName("div")[0]
.innerHTML="<span style='color:green'>hello</span>"
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 看来我对 的使用await不像我理解的那样表现。
我认为async函数和await关键字可以用于返回承诺的调用(例如navigator.mediaDevices.getUserMedia),它会暂停函数执行(如生成器函数),直到承诺解决,然后它会继续执行该函数。
即使我正在等待电话,它也会立即返回,并且我的控制台日志发生故障。具体来说,以“reducer”开头的控制台日志出现在以“getter”开头的控制台之前,此时它应该是相反的/与(我认为)堆栈跟踪应该如何运行相反。
谁能告诉我这里发生了什么?
异步辅助函数 getter:
const getLocalStream = async () => {
try {
const localStream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true });
console.log('getter localStream', localStream);
console.log('about to return')
return localStream;
}
catch (err) {
console.error(err);
}
}
export default getLocalStream;
Run Code Online (Sandbox Code Playgroud)
减速机/存储:
import getLocalStream from './getLocalStream';
const reducer = (state = {}, action) => {
switch (action.type) {
case 'SEND_CALL': {
const { id } = action;
const localStream …Run Code Online (Sandbox Code Playgroud) 我有两个“昂贵”的函数,我想在我的反应应用程序中记住它们,因为它们需要很长时间才能渲染。昂贵的函数用在数组映射中。我想记住数组映射的每个结果,这样如果数组的一个元素发生更改,只有该元素的昂贵函数将被重新计算。(并且要独立地记住昂贵的函数,因为有时只需要重新计算一个函数。)我正在努力解决如何记住并传递当前数组值的问题。
这是工作演示,没有记忆:
import React, { useMemo, useState } from "react";
const input = ["apple", "banana", "cherry", "durian", "elderberry", "apple"];
export default function App() {
const output = input.map((msg, key) => createItem(msg, key));
return <div className="App">{output}</div>;
}
const createItem = (message, key) => { // expensive function 1
console.log("in createItem:", key, message);
return (
<div key={key}>
<strong>{"Message " + (1 + key)}: </strong>
{message} =>{" "}
<span
id={"preview-" + key}
dangerouslySetInnerHTML={{ __html: msgSub(message) }}
/>
</div>
);
};
const msgSub = …Run Code Online (Sandbox Code Playgroud) 为什么 useSelector 里面的选择器会运行两次?
const selector = (state) => {
console.log("invoke Selector");
return state;
};
function App() {
console.log("render App");
const count = useSelector(selector);
const dispatch = useDispatch();
return (
<div className="App">
<button onClick={() => dispatch({ type: "INCREMENT" })}>Increment</button>
<button onClick={() => dispatch({ type: "DECREMENT" })}>Decrement</button>
<p>{count}</p>
</div>
);
}
Run Code Online (Sandbox Code Playgroud)

这是一个工作片段,显示每次 Child 安装时选择器回调运行两次:
const selector = (state) => {
console.log("invoke Selector");
return state;
};
function App() {
console.log("render App");
const count = useSelector(selector);
const dispatch = useDispatch();
return (
<div …Run Code Online (Sandbox Code Playgroud)在我的测试中,我正在尝试模拟实体管理器,因此它将返回一个不会连接到数据库但是返回假值的存储库:
在根据此文档的测试中:
$session = new Session(new MockArraySessionStorage());
$mockManager = $this
->getMockBuilder('\Doctrine\Common\Persistence\ObjectManager')
->disableOriginalConstructor()
->getMock();
$mockManager->expects($this->any())
->method('getRepository')
->will($this->returnValue(new userRepo()));
$client = static::createClient();
$container = $client->getContainer();
$container->set('session', $session);
$container->set('doctrine.orm.entity_manager',$mockManager);
$client->request('POST', '/secured/login'
,array('userName'=>'username','password'=>'password'
,'rememberMe'=>'on'));
$response = $client->getResponse();
//....
Run Code Online (Sandbox Code Playgroud)
在测试中,userRepo:
class userRepo {
public function isValidUser($userName, $password) {
echo "this is isvaliduser";
return $this->getFullUserById(22);
}
public function getFullUserById($id){
echo "this is getfulluserbyid";
return ["name"=>"someName"];
}
}
Run Code Online (Sandbox Code Playgroud)
在控制器中:
public function loginAction(Request $request) {
$userRepo = $this->getDoctrine()->getManager()
->getRepository('mytestBundle:User');
$user=$userRepo->isValidUser($userName,$password);
$response = new Response();
//... other …Run Code Online (Sandbox Code Playgroud) 我创建了一个反应应用程序并npx create-react-app my-app进行了纱线安装。在 App.js 中添加了以下内容:
const a = () => 1,
b = () => 2,
c = () => 3;
function App() {
const wut = useMemo(() => {
return { a: a(), b: b(), c: c() };
}, [a]);
useEffect(() => {
console.log(a(), b(), c());
}, [a]);
Run Code Online (Sandbox Code Playgroud)
Yarn start 会给我警告,但 vscode 不会。
我添加.eslintrc.js了以下内容:
module.exports = {
env: {
browser: true,
es6: true
},
extends: ["eslint:recommended", "plugin:react/recommended"],
globals: {
Atomics: "readonly",
SharedArrayBuffer: "readonly"
},
parserOptions: …Run Code Online (Sandbox Code Playgroud) 我为 vscode安装了漂亮的插件,并有一个 .pretteirrc.js:
module.exports = {
trailingComma: 'es5',
tabWidth: 2,
semi: true,
singleQuote: true,
printWidth: 60,
}
Run Code Online (Sandbox Code Playgroud)
在设置中,默认格式化程序设置为:esbenp.prettier-vscode 并检查保存时的格式,但保存时没有格式化任何内容,也没有给出任何错误的指示。
右键单击具有以下内容的 js 文件:
var test = [1, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 2, 3, …Run Code Online (Sandbox Code Playgroud) 我在测试中有以下代码:
it('shows correct language', () => {
cy.visit('/product/my product');
cy.changeLanguage('English');
cy.get('[data-test=attribute-name]').should(
(elements) => {
console.log('this shows in console', elements);
alert('But it wont break!!!!!!!!!!');//this alert shows
debugger;//never breaks here
},
);
});
Run Code Online (Sandbox Code Playgroud)
启动 cypress./node_modules/.bin/cypress open然后我在 cypress 窗口中运行测试,该窗口打开 chrome,然后我手动打开开发工具(不知道如何告诉 cypress 在打开 devtools 的情况下打开 chrome)。
它在控制台中显示消息并显示警报,但实际上从未中断。在sources选项卡中,未设置“停用断点”,因此断点处于活动状态。
手动设置断点然后单击“运行所有测试”按钮后,第一次运行会在手动设置的断点处暂停但忽略该debugger语句。
文档提到Symfony/app/config/config_dev.yml了开发环境.
我已经捆绑了特定的配置文件 Symfony/src/mmt/mrBundle/DependencyInjection/mmtmrExtension.php
例如:Symfony/src/mmt/mrBundle/Resources/config/services.yml需要加载mmtmrExtension.php但routing.yml在同一目录中却没有.
是否有我必须遵循的命名惯例?那么我该如何Symfony/src/mmt/mrBundle/Resources/config/services_dev.yml根据环境加载mmtmrExtension.php呢?我见过的唯一例子就是硬编码加载services.yml蚂蚁就是它.
在services.yml我有一些代码,如:
mmt.mr.DefaultController:
class: mmt\mrBundle\Controller\DefaultController
arguments: [@data_provider]
calls:
- [ "setContainer", [ @service_container ] ]
Run Code Online (Sandbox Code Playgroud)
也许我应该根据环境加载不同的服务?我想要另一个@data_provider用过.
似乎有数百种方法可以做到这一点,但这些方法都没有被文档100%覆盖.我宁愿有一种方法,但有100%的文档覆盖率.
也许有人可以指出配置文件如何工作的正确位置."书"并没有涵盖太多,烹饪书只提到了与"我如何"相关的部分.
感谢您阅读本文,希望您能提供帮助.