我知道Redux是Flux的一个更好的"实现",或者更好地说它是一个简化事物(应用程序状态管理)的重新设计.
我听过很多关于反应式编程(RxJS)的内容,但我还没有去学习它.
所以我的问题是:这两种技术之间是否存在任何交集(任何共同点)或它们是互补的?......还是完全不同?
我正在使用Visual Studio Code,Vue 2(webpack模板)和Typescript.
这是我的App.vue组件:
<template>
<div id="app">
<navbar></navbar>
[content here]
</div>
</template>
<script lang="ts">
import Navbar from './components/Navbar'
export default {
components: {
Navbar
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
问题1:一切正常,但是我希望<script lang="ts">在.ts文件中有标签内部的智能感知,那么我该如何实现呢?
问题2:在我的main.ts中import App from './App',但是"./App"以红色加下划线,因为VS Code无法找到.ts文件.有没有办法让编辑器在编译时(编辑时)之前识别.vue?
更新(2018-03-25):我强烈建议每个想要设置打字稿的人阅读本文
ui-router状态:
$stateProvider
.state('dashboard', {
url: '/dashboard',
templateUrl: 'app/dashboard/dashboard.html',
controller: 'DashboardController as vm'
});
Run Code Online (Sandbox Code Playgroud)
在DashboardController中我有:
var vm = this;
vm.title = 'Dashboard';
Run Code Online (Sandbox Code Playgroud)
在dashboard.html模板中:
{{vm.title}}
Run Code Online (Sandbox Code Playgroud)
为什么结果显示"{{vm.title}}"而不是绑定到它在控制器中的值?
Firebase最近发布了与Cloud Functions的集成,允许我们上传Javascript函数,无需我们自己的服务器即可运行.
是否可以使用这些功能构建搜索引擎?我的想法是使用本地磁盘(tmpfs卷)将索引数据保存在内存中,对于每个写入事件,我将索引新数据.tmpfs是否在函数调用(实例)之间保存数据?
云功能可以用于此目的,还是应该使用专用服务器来索引数据?
与此相关的另一个问题是:当云功能从Firebase实时数据库获取数据时,它是消耗网络还是只读取磁盘?如何在计算中计算?
谢谢
我正在使用这些软件包的最新版本:
| 规则 | 时间(毫秒) | 相对的 |
|---|---|---|
| 更漂亮/更漂亮 | 156074.280 | 98.4% |
| vue/属性连字符 | 678.026 | 0.4% |
| @typescript-eslint/no-unused-vars | 593.419 | 0.4% |
| 不重新声明 | 174.305 | 0.1% |
| 语句之间的填充线 | 145.755 | 0.1% |
| vue/下一个有效时间点 | 38.034 | 0.0% |
| 不限制进口 | 37.361 | 0.0% |
| @typescript-eslint/no-empty-function | 37.335 | 0.0% |
| @typescript-eslint/无精度损失 | 36.425 | 0.0% |
| vue/计算属性中无异步 | 36.114 | 0.0% |
npm run lint 179.28s user 2.19s system 108% cpu 2:47.58 total
Prettier 占用了总时间的 98.3%。
有什么方法可以优化它(通过传递参数、使用一些额外的包、禁用特定规则……)?
我有一个自定义助手,我收到一个htmlAttributes作为参数:
public static MvcHtmlString Campo<TModel, TValue>(
this HtmlHelper<TModel> helper,
Expression<Func<TModel, TValue>> expression,
dynamic htmlAttributes = null)
{
var attr = MergeAnonymous(new { @class = "form-control"}, htmlAttributes);
var editor = helper.EditorFor(expression, new { htmlAttributes = attr });
...
}
Run Code Online (Sandbox Code Playgroud)
MergeAnonymous方法必须返回参数中收到的合并后的htmlAttributes,其中包含"new {@class ="form-control"}":
static dynamic MergeAnonymous(dynamic obj1, dynamic obj2)
{
var dict1 = new RouteValueDictionary(obj1);
if (obj2 != null)
{
var dict2 = new RouteValueDictionary(obj2);
foreach (var pair in dict2)
{
dict1[pair.Key] = pair.Value;
}
}
return dict1;
}
Run Code Online (Sandbox Code Playgroud)
在示例字段的编辑器模板中,我需要添加更多属性:
@model decimal? …Run Code Online (Sandbox Code Playgroud) 在尝试使用带有重定向流的 Facebook Firebase 提供程序登录后,我收到错误代码“身份验证/超时”(消息:“操作已超时”)。错误出现在getRedirectResult.catch. 请参阅下面的代码:
getRedirectResult(): void {
firebase.auth().getRedirectResult()
.then(result => {
if (result.credential) {
let token = result.credential.accessToken;
}
})
.catch(error => console.log('error on facebook login', error) );
}
Run Code Online (Sandbox Code Playgroud)
我尝试登录台式机和 iPhone SE,一切正常。该问题仅出现在我的 iPad 2 中。
这是我在我的尝试vue.config.js:
module.exports = {
configureWebpack: {
optimization: {
splitChunks: {
cacheGroups: {
styles: {
name: 'styles',
test: /\.css$/,
chunks: 'all',
enforce: true,
},
},
},
},
},
css: {
sourceMap: devMode,
extract: {
filename: 'main.css',
},
},
};
Run Code Online (Sandbox Code Playgroud)
我的输出目录中有多个css文件,我想将所有css文件合并/优化到一个文件中。我有通过动态导入创建的多个块,不确定是否是原因。
在具有以前的CLI的旧webpack模板中,我使用extract-text-webpack-plugin了该工作,并且该工作正常。
我在以下问题中找到了一些讨论,但在提出此问题时尚无解决方案。
我lang在所有路由路径的开头都有一个可选参数,例如/:lang?/foo.
router-link当我在传递参数时使用 foo 路由时lang,它与该路由匹配并正确地将一个.router-link-active类添加到<a/>.
然而,在我的项目的许多地方,我没有向 传递任何参数,router-link并且在全局路由器导航防护中,如果没有人传递,beforeEach我将设置参数。lang在这种情况下,router-link不会添加活动类,因为它与路线不匹配,因为道具中缺少参数to。
如何使匹配逻辑忽略所有路由的可选参数,以便添加.router-link-active和.router-link-exact-active类?
这是我玩过的一个jsfiddle,我希望第一个链接是红色的。
以下是相关部分:
<router-link :to="{name: 'foo'}">/foo</router-link>
<router-link :to="{name: 'foo', params: {lang: 'en'}}">/en/foo</router-link>
Run Code Online (Sandbox Code Playgroud)
routes: [
{
path: '/:lang?',
component: {
render(c) {
return c('router-view');
},
},
children: [
{
name: 'foo',
path: 'foo',
component: Foo
}
]
}
]
router.beforeEach((to, from, next) => {
if (!to.params.lang) {
const …Run Code Online (Sandbox Code Playgroud) firebase ×2
javascript ×2
vue.js ×2
angularjs ×1
asp.net-mvc ×1
attributes ×1
performance ×1
prettier ×1
redux ×1
rxjs ×1
typescript ×1
vue-cli ×1
vue-router ×1
vuejs2 ×1
webpack-4 ×1