小编Eug*_*nio的帖子

动态更改我的Vue.js SPA主题的最佳方法是什么?

所以我认为这个标题足以解释:我想动态地设计我的整个应用程序.也许这意味着当我按下特定按钮时更改所有div的颜色,或者在特定用户登录时更改整个webapp的颜色.

只是为了对我目前正在进行的工作提供一些见解,我会说我已经构建了一个使用许多库的Vue.js应用程序,其中包括一个名为Element-ui的库,它已经内置了一个主题选项.问题是它是用scss编写的,我想在导航过程中更改所有变量颜色.我的项目看起来像这样:

<template>
  ... some HTML and components...
</template>

<script>
  ... some javascript ...
</script>

<style scoped>
  ... some style that is scoped to the current component only ...
</style>
Run Code Online (Sandbox Code Playgroud)

我有很多类似这样的文件,因此对所有这些文件进行"全局功能"对我来说似乎并不实用.我也只在我的导入一次主scss文件main.js.

有什么办法可以为我的webapp创建一个dinamic主题吗?使用saas是个好主意吗?可能是Javascript?

编辑

我觉得我没有足够好地解释它,所以我想添加一个简单的例子.如果您访问元素页面,您可以在右上角看到一个颜色选择器,当颜色发生变化时,它也会改变整个网站的重点颜色,如按钮颜色,链接颜色等.

希望这有助于更好地理解

编辑

现在我已经找到了一个非常差的,我认为,非常优化的解决方案.我们的想法是,当用户更改主题时,我只需创建一个新的css文件并将其附加到当前文档.

let sheet = document.createElement('style')
sheet.innerHTML = `*[class*="--primary"]{
                      background-color: ${colors[0]};
                    }
                    ...`;
document.body.appendChild(sheet);
Run Code Online (Sandbox Code Playgroud)

我真的认为这是一个非常糟糕的解决方案,但是现在当用户更改参数时,我无法想出任何其他可以正常工作的方法.我真的希望这个过程是完美无缺的:用户选择一种颜色,整个应用程序只是更改为特定的颜色,没有预先构建theme.css.

最终编辑

我终于找到了解决方案,请参考答案!

theming vue.js element-ui

5
推荐指数
1
解决办法
4434
查看次数

Azure CosmosDB:存储过程基于查询删除文档

目标是输入一个简单的字符串查询,如

SELECT * 
FROM c 
WHERE c.deviceId = "device1"
Run Code Online (Sandbox Code Playgroud)

并且需要删除所有由此产生的获取的文档。

我找到了关于使用存储过程执行此操作的非常旧的帖子,但我无法使其与“新”UI 一起正常工作。

非常感谢。

编辑:我觉得@jay-gong 指出了正确的方向,但我在他的解决方案中遇到了问题:

我可以正确创建存储过程,但是当我尝试执行它时,它要求我提供分区键,但在执行后,它不会删除任何文档。

该集合只有几个文档,它的分区键是/message/id我在分区键字段中写的。

stored-procedures azure azure-cosmosdb

3
推荐指数
1
解决办法
6906
查看次数

NodeJS - 承诺内循环

我今天的问题与循环内的承诺有关。就在这里,我会放我的代码,正如你所看到的,它做了一些事情。首先,它在我的所有事件中循环,并将它在其中找到的日期拆分为 3 个字段以将其插入到 SQL 数据库中。

我总共填了 2 个表,一个是日期,一个是实际事件。问题在于,当这段代码被执行时,它会一直循环到最后并一次性完成所有日期分配,然后它开始释放承诺。这使我的函数插入 x 次相同的日期和事件(其中 x 是我的事件数组的长度)。

现在,为什么会发生这种情况?我专门针对这个问题研究并实现了 promise,但它似乎仍然存在。有人可以向我解释我做错了什么吗?另外,你是不是觉得这段代码有点“末日金字塔”之类的?非常感谢!

events.forEach(function (event) {
        // Simple date formatting
        dayFormatted = event.day.split("_");
        year = dayFormatted[0];
        month = dayFormatted[1];
        day = dayFormatted[2];

        // Check if the row already exists ...
        SQLCheckTableRow(`day`, year.toString(), month.toString(), day.toString()).then(function (skip) {
            // ... if not it skips all this part
            if (!skip) {
                // Create, if it doesn't exist already, a date table that is going to be connected to all the events and …
Run Code Online (Sandbox Code Playgroud)

node.js promise

1
推荐指数
1
解决办法
1071
查看次数

在同一端口上运行前端和后端

我今天遇到的问题与路由有关.我有两个主要代码:一个是前端,另一个是后端.

前端是使用Vue.js编写的,所以它是SPA.这个webapp很复杂,涉及很多路由和后端AJAX API调用.

// All imports
import ...

loadMap(Highcharts);
loadDrilldown(Highcharts);
boost(Highcharts);

Vue.config.productionTip = false

Vue.use(VueCookie);
Vue.use(ElementUI, {locale});
Vue.use(VueRouter);
Vue.use(VueHighcharts, {Highcharts });
Vue.use(HighMaps);

// This is a global component declaration
Vue.component('app-oven', Devices);
Vue.component('app-sidebar', SideBar);
Vue.component('app-header', Header);
Vue.component('app-footer', Footer);
Vue.component('app-query', Query);
Vue.component('app-deviceproperties', DeviceProperties);
Vue.component('app-device', Device)
Vue.component('app-queryselection', QuerySelection)
Vue.component('app-index', Index)
Vue.component('app-index', Error)
Vue.component('app-realtime', RealTime);
Vue.component('app-login', Login)
Vue.component('app-preferences', Preferences)

const routes = [
  { path: '/index', component: Index},
  { path: '/', component: Login},
  { path: '/device/:deviceId', component: Device},
  { …
Run Code Online (Sandbox Code Playgroud)

production node.js express vue.js

1
推荐指数
2
解决办法
3633
查看次数