我正在开发一个使用Angular CLI构建的新Angular2项目,并将项目配置为使用SCSS.我已将Bootstrap 4成功加载到我的styles.scss文件中,但是如果我尝试访问任何Bootstrap(或者我自己styles.scss在组件中定义的变量,则会Undefined Variable出现构建错误.
组件的样式文件是在styles节点的主条目之前编译的angular-cli.json吗?我怎样才能使在该全局级别定义的任何变量可用于应用程序中的所有组件?谢谢!
角cli.json
"apps": [
{
...
"styles": [
"styles/styles.scss"
],
...
}
]
Run Code Online (Sandbox Code Playgroud)
styles.scss
// Bootstrap
$enable-flex: true; // Enable Flexbox mode
@import "../../node_modules/bootstrap/scss/bootstrap";
Run Code Online (Sandbox Code Playgroud)
零件
.navbar {
background: $brand-primary; // Undefined variable here
}
Run Code Online (Sandbox Code Playgroud) 鉴于以下结构;
??? api/ - A PHP application, to have its own repository
??? docker/ - Docker configuration for shared containers (MySQL, Nginx)
??? docker-compose.yml - Defines all of the services
??? web-client/ - A standalone Angular application, to have its own repository
Run Code Online (Sandbox Code Playgroud)
目前整个应用程序位于一个存储库中,但我希望拆分为单独的存储库.开发尚未开始,因此维护任何历史记录等都没有问题.
首先,确定所有的服务在根级别docker-compose去了解这一点的最好办法文件,还是应该api和web-client更加孤立自己docker-compose,从而彻底分开管理?如果分开,是否仍然可以有一个" depends_on"另一个?
其次,为此管理存储库的最佳方法是什么?根级代码(docker-compose.yml和docker/)应该存在于一个存储库中,但这也取决于存在的其他两个存储库,可能是作为子级.我查看了git子模块,但似乎父存储库必须绑定到子节点中的特定提交,这可能会使多个并行功能难以处理?
我正在考虑使用这个Yeoman生成器作为一个迷你项目的入门者,该项目包含我可以发布的一些可重用的表单组件.生成器构建模块以及配置使用的示例组件,指令,管道和服务(您可以在此处查看生成器的模板文件).
然后npm link,我曾经允许我在我的Angular应用程序中安装生成的项目,看起来工作正常,如下面从项目node_modules目录中所示;
Run Code Online (Sandbox Code Playgroud)
根据这些项目或其他内容,我错过了什么让这个工作?谢谢!
编辑:sample.*.d.ts文件(安装后默认为)
{
"compilerOptions": {
"noImplicitAny": true, …Run Code Online (Sandbox Code Playgroud) 我有一个问题,我连接到我当地星巴克的WiFi网络时无法启动任何docker机器,接收到以下输出;
$ docker-machine start
启动"default"...
(默认)检查网络是否需要重新创建...
在机器启动时设置仅主机网络时出错:仅限主机的cidr与主机接口的网络地址冲突
连接到我的家庭网络或使用我的移动热点时,这不会发生.这有什么解决方法吗?
我目前正在将 Laravel Cashier(使用 Stripe)集成到一个小型应用程序中,该应用程序具有以下三层帐户;
\n\n当前的流程是,当用户在注册后确认其电子邮件地址时,他们就会以免费计划(无卡)注册 Stripe。然后他们可以随时选择升级到付费计划。
\n\n我的困惑在于管理用户订阅的更改,其代码如下所示:
\n\n// Check if the user has a subscription\n$activeSubscription = $user->subscriptions()->first();\n\nif ($activeSubscription instanceof Subscription) {\n return $activeSubscription->swap($targetPlan);\n}\n\n// No active plan (new registration) - create a new one\nreturn $user->newSubscription($targetPlan, $targetPlan)->create();\nRun Code Online (Sandbox Code Playgroud)\n\n当使用该swap方法将用户的套餐从免费更改为基本时stripe_id,subscriptions会更新以反映,这很好,因为用户实质上获得了更多功能。然而,如果用户决定从高级降级到基本,则该表中没有记录表明用户应保留高级功能直到该计费周期结束,因为它会再次更新上表中的单行。
这里应该发生什么过程?如何管理此层次结构并确保正确的计划在其计费周期结束之前一直处于“活动”状态?
\n\n编辑
\n\n经过思考,我认为使用swap应该仅用于直接交换适用的情况(例如,从每月计划到同等年度计划)。那么执行上述操作的最佳方法是什么?我的猜测是取消现有目标并订阅新目标,但是如何将后者的开始延迟到第一个周期结束?
这是完整的subscribe方法,以防有帮助;
public function subscribe(User $user, string $targetPlan, string $token = …Run Code Online (Sandbox Code Playgroud) 我有一个包含任务集合的模拟文件,每个任务都有截止日期.目前(下面)我创建了一个简单的observable,当订阅时,它返回模拟任务的集合.我未能弄清楚的是我如何处理平面数组的任务以按截止日期对它们进行分组,返回一个类似的结构;
// Current data structure (unstructured)
[{due: "2016-01-01"}, {due: "2016-01-01"}, {due: "2016-01-02"}, ...]
// Desired structure for consumption
{
"2016-01-01": [{...}, {...}],
"2016-01-02": [{...}, {...}, {...}],
"2016-01-03": [{...}]
}
Run Code Online (Sandbox Code Playgroud)
我目前的可观察创作代码如下;
// Service...
tasks: Observable<Task[]>;
// init() called from the constructor
private init() {
this.tasks = Observable.create(observer => {
observer.next(mockTasks);
});
}
getTasks() {
return this.tasks;
}
Run Code Online (Sandbox Code Playgroud)
在我的组件中消耗的如下;
// Component...
ngOnInit() {
this.taskService.getTasks().subscribe(tasks => {
this.tasks = tasks; // Contains the collection of tasks as expected
});
}
Run Code Online (Sandbox Code Playgroud)
这很好 - 我按照预期完成了我的完整任务.我已经尝试使用 …
我正在使用Twig模板和用于UI组件的VueJS开始使用Symfony 4.
我在.vue列出任务的文件中有一个非常基本的组件,它目前呈现基本表.
// task-list.vue
<template>
<div>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>
Task
</th>
<th>
Description
</th>
<th>
Completed?
</th>
</tr>
</thead>
<tbody>
<tr v-for="task in parsedTasks">
<td>
{{ task.title }}
</td>
<td>
{{ task.description }}
</td>
<td>
{{ task.completed ? 'Yes' : 'No' }}
</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
name: 'task-list',
props: {
tasks: {required: true}
},
computed: {
parsedTasks() {
return JSON.parse(this.tasks);
}
},
};
</script>
Run Code Online (Sandbox Code Playgroud)
该组件在根JS文件中注册;
// assets/js/app.js …Run Code Online (Sandbox Code Playgroud) 我有一个在Docker容器中运行的Angular 5.2应用程序,出于开发目的,我使用Angular CLI ng-serve来提供应用程序,该应用程序提供对更改的自动重新加载.我最初的工作服务命令;
ng serve --host 0.0.0.0 --port 80 --disable-host-check
这个功能很好,我可以按照预期从主机访问服务的应用程序.
对于上述情况,由于各种来源,我添加了--poll 1000标志,它告诉CLI每1000ms轮询一次文件的更改,如果没有它,它永远不会检测到更改,因此永远不会重新编译和更新.我的问题是在正在更改的文件和触发重建的docker容器中检测到的更改之间,存在最多15-20秒的延迟.我已确认文件更改已转换为容器,因为我可以cat立即保存在容器中的已编辑文件并查看更改.我可以将轮询超时更改为1毫秒,这确实将延迟减少到几秒钟,但这显然不理想,延迟仍然很大.
为什么会出现这种延迟?
// docker-compose.yml
web-client:
build:
context: ../web-client/
dockerfile: ./docker/Dockerfile
ports:
- "80:80"
volumes:
- ../web-client/:/var/www/web-client
container_name: web-client
// Dockerfile
FROM node:9.11
COPY ./ /var/www/web-client
ENTRYPOINT ["/var/www/web-client/docker/entrypoint.sh"]
// entrypoint.sh
#!/usr/bin/env bash
cd /var/www/web-client
yarn run start
// package.json
"scripts": {
...
"start": "ng serve --host 0.0.0.0 --port 80 --poll 1 --disable-host-check",
... …Run Code Online (Sandbox Code Playgroud) 我目前正在学习如何使用Symfony 3(带有FOSRestBundle)和JMS Serializer来实现一个相对简单的API.我最近一直在尝试实现作为消费客户端指定哪些字段应该在响应中返回的能力(请求的实体和关系中的两个字段).例如;
/posts没有包含查询字符串将返回所有Post实体属性(例如title,body,posted_at等)但没有关系./posts?fields[]=id&fields[]=title只会返回帖子的ID和标题(但同样没有关系)/posts?include[]=comment将包括上述但与Comment关系(及其所有属性)/posts?include[]=comment&include[]=comment.author 将如上所述返回,但也包括每个评论中的作者尝试实施这是一个明智的事情吗?我最近对此进行了大量的研究,我看不出我可以1)限制单个字段的检索,2)只有在明确要求时才返回相关实体.
我已经有了这个概念的初步播放,但是即使确保我的存储库只返回Post实体(即没有注释),JMS Serializer似乎触发了所有相关实体的延迟加载,我似乎无法阻止它.我已经看到了一些链接,例如这个例子但是修复似乎不起作用(例如在该链接中,$object->__load()在原始代码中从未到达注释掉的调用.
我已经使用JMSSerializer的Group功能实现了一个基于关系的示例,但是当我理想情况下能够构建一个Doctrine Querybuilder实例,动态添加andWhere()调用并让序列化程序只返回那些确切的数据而不加载时,我觉得很奇怪.在人际关系中
我为此撒谎而道歉,但我已经坚持了一段时间,我很感激任何输入!谢谢.
我正在使用stof/StofDoctrineExtensionsBundle(Atlantic18/DoctrineExtensions 的捆绑包装器)来实现嵌套集(树)实体。该实体已配置并正常工作,但我无法弄清楚如何在单个查询中检索所有子项(完整树)的所有根音符。我目前有完整的集合返回,但它延迟加载所有子项,这意味着执行了大量查询。
谢谢你的帮助。
nested-sets doctrine-orm doctrine-extensions stofdoctrineextensions
我正在第一次使用 Karma/Jasmine 等测试我的一个组件,并且主要关注测试文档。我的组件需要 3 个构造函数参数;
constructor(
private myService: MyService,
private renderer: Renderer,
private element: ElementRef
) { }
Run Code Online (Sandbox Code Playgroud)
我试图根据文档的这一部分模拟/存根这些依赖项,如下所示;
// Mocks/Stubs
const myServiceStub = {};
class MockElementRef {}
class MockRenderer {}
// beforeEach block
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent ],
providers: [
{ provide: ElementRef, useClass: MockElementRef },
{ provide: Renderer, useClass: MockRenderer },
{ provide: MyService, useValue: myServiceStub},
]
});
fixture = TestBed.createComponent(MyComponent);
});
Run Code Online (Sandbox Code Playgroud)
尽管如此,每当我运行测试时,都会出现以下错误;
Error: Can't resolve all parameters for MyComponent: …Run Code Online (Sandbox Code Playgroud) 我正在使用hautelook/AliceBundle(使用nelmio/alice和fzaninotto/Faker)为应用程序生成固定装置。我有一个Doctrine实体Group,它是一个嵌套集实体(使用StofDoctrineExtensionsBundle提供的Tree功能)。我不知道如何为嵌套集实体生成夹具数据-确保将组生成为具有正确的根ID和父级的树。感谢您的指导。
我当前的灯具文件很简单;
MyBundle\Entity\Group:
group{1..25}:
title: <word()>
Run Code Online (Sandbox Code Playgroud) 我是第一次使用Flysystem使用 S3(在这种情况下特别是用户配置文件头像图像)实现文件上传。我目前正处于创建 S3 存储桶的阶段,用户可以上传图像,然后可以在存储桶控制台中在线查看该图像。
我现在需要能够在请求时显示这些图像(即查看该用户的个人资料)。我假设此过程将生成 URL(例如https://s3.my-region.amazonaws.com/my-bucket/my-filename.jpeg)并将其用作src图像标签的这样做,文件(或存储桶)必须标记为公共。这对我来说似乎是合理的,因为其中的文件并不是真正私密的。但是,当将存储桶更新为公共状态时,您会看到一条消息,说明;
我们强烈建议您永远不要授予对 S3 存储桶的任何类型的公共访问权限。
是否有不同或更安全的方式来实现这样的直接图像链接,而 AWS 的新手没有看到?
angular ×5
php ×4
docker ×3
symfony ×3
doctrine-orm ×2
amazon-s3 ×1
faker ×1
flysystem ×1
git ×1
jasmine ×1
javascript ×1
laravel ×1
mocking ×1
nelmio-alice ×1
nested-sets ×1
networking ×1
npm ×1
observable ×1
rxjs ×1
sass ×1
testing ×1
twig ×1
vue.js ×1
vuejs2 ×1