Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Относительные пути (https://javascript.ru/forum/angular/72991-otnositelnye-puti.html)

kaniel_outis 12.03.2018 13:14

Относительные пути
 
можно ли присвоить определенному пути переменную, что бы заменить

../../../../someFolder/someFile.html
на
$var/someFolder/someFile.html
?:help:

ksa 12.03.2018 13:17

Цитата:

Сообщение от kaniel_outis
на
$var/someFolder/someFile.html

Так в Ангулар не используют переменные... :no:

kaniel_outis 12.03.2018 13:19

я понимаю. Пытался максимально понятней обьяснить свой вопрос. Если не переменная, то как ? есть мысли ?

ksa 12.03.2018 13:21

Цитата:

Сообщение от kaniel_outis
Пытался максимально понятней обьяснить свой вопрос.

Для этого делают тестовые примеры... ;)

kaniel_outis 12.03.2018 13:22

Буду иметь ввиду.

laimas 12.03.2018 14:04

kaniel_outis,
может это http://htmlbook.ru/html/base ?

kaniel_outis 12.03.2018 14:50

Цитата:

Сообщение от laimas (Сообщение 480338)
kaniel_outis,
может это http://htmlbook.ru/html/base ?

Немного не то. Но спасибо за отклик

kaniel_outis 12.03.2018 14:54

Вот, на существующем примере. Проект имеет вложенную архитектуру.
Проект расширяется, теряется время на указание точных адресов. Хотелось бы автоматизировать этот процесс
import { Training } from '../../../models/training/training';
import { DivisionsService } from '../../../services/divisions.service';
import { Division } from '../../../models/division';
import { UsersService } from '../../../services/users.service';
import { AdminsService } from '../../../services/admins.service';


interface SettingsMap {
  [type: string]: boolean;
}



@Component({
  selector: 'app-settings',
  templateUrl: './settings.component.html',
  styleUrls: ['./settings.component.css']

ksa 12.03.2018 15:00

kaniel_outis, я с модулями дело не имел пока... Но рискну предложить такой вариант

var url='../../..';
import { Training } from url+'/models/training/training';
import { DivisionsService } from url+'/services/divisions.service';
import { Division } from url+'/models/division';
import { UsersService } from url+'/services/users.service';
import { AdminsService } from url+'/services/admins.service';

А ты опробуй. ;)

Nexus 12.03.2018 15:08

Мб. эта статья поможет?
https://decembersoft.com/posts/say-g...cript-imports/

destus 12.03.2018 15:09

kaniel_outis,
У TypeScript есть такая штука - baseUrl и paths называются. Настраиваются в tsconfig.json. Так вот, в ней можно указать точка входа в проект (baseUrl) и paths - аналог алиасов в вебпаке.
При таком конфиге
Код:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "paths": {
      "@app/*": ["app/*"]
    },
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ]
  }
}

и структуре проекта
Код:

-node_modules
-src
    -app
        -models
            -todo.ts
    ...
-tsconfig.json
...

Импорт модели Todo из любого файла любой вложенности будет выглядеть как
import { Todo } from '@app/models/todo'.

То есть мы избавляемся от относительных путей и получаем плоскую структуру нашего проекта :)

https://netbasal.com/sexier-imports-...t-e3c645bdd3c6

kaniel_outis 12.03.2018 16:53

Цитата:

Сообщение от destus (Сообщение 480349)
kaniel_outis,
У TypeScript есть такая штука - baseUrl и paths называются. Настраиваются в tsconfig.json. Так вот, в ней можно указать точка входа в проект (baseUrl) и paths - аналог алиасов в вебпаке.
При таком конфиге
Код:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "paths": {
      "@app/*": ["app/*"]
    },
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2016",
      "dom"
    ]
  }
}

и структуре проекта
Код:

-node_modules
-src
    -app
        -models
            -todo.ts
    ...
-tsconfig.json
...

Импорт модели Todo из любого файла любой вложенности будет выглядеть как
import { Todo } from '@app/models/todo'.

То есть мы избавляемся от относительных путей и получаем плоскую структуру нашего проекта :)

https://netbasal.com/sexier-imports-...t-e3c645bdd3c6

огромное спасибо! )
Правда поздно увидел Ваше сообщение, нашел это же решение на другом форуме.
Единственное.... нужно ли как то ребилдить проект после изменения tsconfig? Изменения не применяются у меня, почему то. Сейчас разибраюсь. Но Вам лайк+ комент)

destus 12.03.2018 18:53

Цитата:

нужно ли как то ребилдить проект после изменения tsconfig?
Просто перезапустить сборку, ng serve. tsconfig.json в самом корне проекта который, а не в src.


Часовой пояс GMT +3, время: 10:20.