tar "6.0.2"
, а не tar "^6.0.2"
.{
"name": "ts",
"version": "1.0.0",
"type": "module",
"main": "index.js",
"module": "index.js",
"license": "MIT",
"dependencies": {
"typescript": "^4.4.4"
},
"devDependencies": {
"@types/node": "^16.11.7"
}
}
{
"compilerOptions": {
"target": "esnext",
"module": "esnext",
"esModuleInterop": true,
"strict": true
}
}
import cp from "child_process";
console.log(cp);
function findInString(OUTPUT_HTML, before, after) {
let start = OUTPUT_HTML.indexOf(before);
if (start === -1)
return '';
start += before.length;
const end = OUTPUT_HTML.indexOf(',', start);
if (end === -1)
return '';
return OUTPUT_HTML.slice(start, end);
}
const productCost = +findInString(OUTPUT_HTML, '"productCost":', ',');
const PeoplePageWithErrorApi = WithErrorApi(PeoplePage)
<PeoplePageWithErrorApi foo="bar">
// props = {foo: bar}
// внутри PeoplePage props {
// foo: 'bar',
// setErrorApi: setErrorApi из WithErrorApi,
// setLoader: setLoader из WithErrorApi,
// isLoading: isLoading из WithErrorApi
//}
Vue
использует webpack
, а webpack
использует для запросов конкретные пути, которые ты указываешь при билде.publicPatch
указывает на соответствующий сайт.webpack
позволяет менять публичный путь динамически, присваивая его переменной __webpack_public_path__
. Остаётся только при старте приложения получить путь к скрипту, например из document.currentScript
, выделить из него нужный путь и присвоить его. /api
откуда надо, а только потом заворачивал все запросы на index.html
.vue-cli
используется webpack dev server, и там есть proxy, через который вы можете направить запросы с /api
на свои боевые или локальные сервера. const dateTimeLocal = reactive({
day: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
hour: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
minute: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
second: ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"],
});
computed
свойства в vue пересчитываются когда меняются их реактивные зависимости, которые участвовали в предыдущих вычислениях
computed
к this.value
- теперь он смотрит за изменениями this.value
. Твоё же computed
ни к чему не обращается, оно просто возвращает функцию, её содержимое и вызовы к computed
не относятся.computed: {
validatedClass() {
return (input) => {
return {
'uk-form-success': this.wasValidated && !this.errors[input],
'uk-form-danger': this.wasValidated && this.errors[input],
}
}
}
},
function someRandomFunction(input) => {
return {
'uk-form-success': this.wasValidated && !this.errors[input],
'uk-form-danger': this.wasValidated && this.errors[input],
}
}
computed: {
validatedClass() {
return someFunction.bind(this);
}
},
computed
будет обновлён только когда Vue пошлёт. В идеале, на самом деле, никогда.this.errors = {}
.this.errors.email = []
- не реактивны.this.$set(this.errors, 'email', [])
либо, что лучше, заранее:this.errors = {
email: '',
// ...
}
this.$children
- очень очень очень плохо. Просто используй props
. Такая возможность наличествует только для крайне сложных случаев в компонентах библиотек. Точно не для твоего. bootstrap
во втором только modal
. Однако на деле нет никакой разницы, потому что все популярные системы сборки умеют в tree-shaking
, т.е. оставляют в бандле только то, что используется.