2016-08-09 2 views
2

Aurelia를 사용하여 성공적인 응용 프로그램을 실행하고 있지만, Aurelia에서 제공하는 Vscode와 skeleton을 사용하여 응용 프로그램을 개발했습니다. CLI를 사용할 수있게되었으므로 응용 프로그램을 VS2015/Asp.net 핵심 프로젝트로 이식하려고했지만 몇 가지 어려움이 있습니다.내 Aurelia 응용 프로그램 내에서 패키지를 가져 오는 방법

VSCode 프로젝트에는 Gulp가 컴파일하는 데 사용하는 bundles.js 파일이 있습니다 (이해할 수있는대로). 이 파일에는 "dist/aurelia"섹션이 있습니다. 여기서 가져올 추가 패키지를 모두 넣으면 css 및 js 파일을 가져옵니다. 다음과 같습니다 : 내가 VS2015에서 새 프로젝트를 만들 명령 au new --here을 사용할 때

"dist/aurelia": { 
     "includes": [ 
     "aurelia-framework", 
     "aurelia-bootstrapper", 
     "aurelia-fetch-client", 
     "aurelia-router", 
     "aurelia-animator-css", 
     "aurelia-templating-binding", 
     "aurelia-polyfills", 
     "aurelia-templating-resources", 
     "aurelia-templating-router", 
     "aurelia-loader-default", 
     "aurelia-history-browser", 
     "aurelia-logging-console", 
     "bootstrap", 
     "bootstrap/css/bootstrap.css!text", 
     "fetch", 
     "jquery", 
     "rstacruz/nprogress", 
     "moment", 
     "systemjs/plugin-text/*.js", 
     "components/jqueryui", 
     "quilljs", 
     "rich-text", 
     "util", 
     "signalr" 
     ], 
     "options": { 
     "inject": true, 
     "minify": true, 
     "depCache": false, 
     "rev": false 
     } 
    } 

것은 그러나, 생성 된 프로젝트는 조금 다른 보인다. 나는 aurelia_project 폴더를 가지고 있으며, 그 안에는 모든 빌드/컴파일이 일어나는 것처럼 보입니다. 그 폴더에는 aurelia.json 파일이 있는데, 그 패키지는 (NPM btw를 사용하고 있습니다.) 모든 패키지를 넣어야합니다. 이 패키지를 가져 오려고하면 파일 경로에 .js가 자동으로 추가되고 CSS가 완전히 없어져서 페이지가로드 될 때 CSS가로드되지 않습니다. 여기에 aurelia.json의 모습입니다 :

"dependencies": [ 
      "aurelia-binding", 
      "aurelia-bootstrapper", 
      "aurelia-dependency-injection", 
      "aurelia-event-aggregator", 
      "aurelia-framework", 
      "aurelia-history", 
      "aurelia-history-browser", 
      "aurelia-loader", 
      "aurelia-loader-default", 
      "aurelia-logging", 
      "aurelia-logging-console", 
      "aurelia-metadata", 
      "aurelia-pal", 
      "aurelia-pal-browser", 
      "aurelia-path", 
      "aurelia-polyfills", 
      "aurelia-route-recognizer", 
      "aurelia-router", 
      "aurelia-task-queue", 
      "aurelia-templating", 
      "aurelia-templating-binding", 
      { 
      "name": "text", 
      "path": "../wwwroot\\scripts/text" 
      }, 
      { 
      "name": "aurelia-templating-resources", 
      "path": "../node_modules/aurelia-templating-resources/dist/amd", 
      "main": "aurelia-templating-resources" 
      }, 
      { 
      "name": "aurelia-templating-router", 
      "path": "../node_modules/aurelia-templating-router/dist/amd", 
      "main": "aurelia-templating-router" 
      }, 
      { 
      "name": "aurelia-testing", 
      "path": "../node_modules/aurelia-testing/dist/amd", 
      "main": "aurelia-testing", 
      "env": "dev" 
      }, 
      { 
      "name": "jquery", 
      "path": "../node_modules/jquery/dist/jquery.min" 
      }, 
      { 
      "name": "bootstrap", 
      "path": "../node_modules/bootstrap/dist/js/", 
      "main": "bootstrap" 
      } 
     ] 
     } 

그래서, 내 VSCode 프로젝트 해요, 내가 필요로 태그를 통해 HTML 페이지에 부트 스트랩 CSS를 가져옵니다. 그것은 여전히 ​​일을하는 적절한 방법입니까? 그렇다면이 가져 오는 문제를 어떻게 수정합니까?

편집

는 대답은 아래 조금 더 얻을 수있었습니다. 이제는 프로젝트가 빌드되고 오류없이 실행되지만 부트 스트랩 CSS를 올바르게 가져올 수 없습니다.

{ 
      "name": "aurelia-testing", 
      "path": "../node_modules/aurelia-testing/dist/amd", 
      "main": "aurelia-testing", 
      "env": "dev" 
      }, 
      "jquery", 
      { 
      "name": "bootstrap", 
      "path": "../node_modules/bootstrap/dist/js", 
      "main": "bootstrap", 
      "resources": [ 
       "../css/*.css" 
      ] 
      } 

그래서이 부트 스트랩 패키지에 CSS 파일을 추가 :

여기에 나의 새로운 aurelia.json 파일의 조각입니다. 자, 내 타이프 스크립트 파일에서 import 'jquery'import 'bootstrap'을 호출하고 있는데, 아직 CSS를 얻지 못했습니다. 이 문제를 해결하는 방법을 모릅니다.

답변

6

aurelia skeleton-esnext는 SystemJS를 사용하고 Aurelia-CLI는 RequireJS (SystemJS 및 WebPack이 CLI에서 곧 지원 될 예정)를 사용합니다. SystemJS와 RequireJS는 모듈 로더이며 약간 다르게 동작합니다. 그래서 모듈을 구성하는 데 2 ​​가지 다른 방법이 있습니다. http://aurelia.io/hub.html#/doc/article/aurelia/framework/latest/contact-manager-tutorial/9

"dependencies": [ 
    ... 
    { 
    "name": "nprogress", 
    "path": "../node_modules/nprogress", 
    "main": "nprogress", 
    "resources": [ 
     "nprogress.css" 
    ] 
    } 
    ... 
] 

위의 코드는 번들 파일에 nprogress.css을 넣어 RequireJS를 알려줍니다

이 링크는 CSS 파일이있는 lib 디렉토리를 구성하는 방법을 보여줍니다. 그러나 css 파일을 가져 오거나 필요로하는 위치와 시점을 알려주지 않으므로 앱에서 가져 오기/요구해야합니다. 보기에서 <require from="nprogress/nprogress.css"></require>을 사용하거나보기 모델에서 import 'nprogress/nprogress.css';을 사용하십시오.

SystemJS를 사용할 때 JSPM이 일부 종속성을 감지하고 CSSJ 파일을로드하도록 SystemJS에 알리는 특별한 구문을 생성 할 수 있기 때문에 일부 CSS 파일을 가져올 필요가 없습니다.

/* */ 
"format global"; 
"deps ./nprogress.css!"; 
/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress 
* @license MIT */ 

;(function(root, factory) { 
///.... 

라인은 "./nprogress.css을 deps : 예를 들어, 때 nprogress은 니혼 전자 : JSPM를 사용하여 설치, 다음 파일을 생성합니다!";이. 따라서/가져보기 또는 뷰 - 모델의 CSS 파일을 필요로하지 않는 모듈을로드 할 때 자동으로 nprogress.css을 필요로/가져 SystemJS을 알려줍니다

희망이 도움이

+0

도움이됩니다. 이제 aurelia.json 파일에서 js와 ​​css를 컴파일하고 오류없이 페이지를로드합니다. 그러나 나는 여전히 CSS를 필요로하는 데 어려움을 겪고있다. "../node_modules/bootstrap/dist/js"경로와 "../css/*.css"리소스를 사용하여 부트 스트랩 종속성을 추가하고 있습니다. 내 view-model에서 'jquery 가져 오기'및 'import bootstrap'이 있는데 CSS를 가져 오지 않는 것 같습니다. 'import bootstrap'은 css와 js 파일을 모두 가져와야합니다. 맞습니까? – James

+0

아니요 아니요 아니요. 나는 SystemJS가 어떤 의존성을 탐지하고 모듈 구성에 따라 자동으로로드 할 수 있다고 말했다. CLI (귀하의 경우에는 RequireJS)를 사용하는 경우 모든 CSS 파일을 가져와야합니다 –

+0

나는 그것을 수행했다고 믿습니다. 편집 된 질문을 확인하십시오. 수정 된 aurelia.json 파일의 일부 스 니펫을 게시했습니다. – James

4

합니다.! 롭 아이젠 버그에 의해 contact-manager tutorial을 확인

이 aurelia.json하는 JQuery와, 부트 스트랩을 추가하는 방법을 보여줍니다 :

"dependencies": [ 
... 
"jquery", 
{ 
"name": "bootstrap", 
"path": "../node_modules/bootstrap/dist", 
"main": "js/bootstrap.min", 
"deps": ["jquery"], 
"exports": "$", 
"resources": [ 
    "css/bootstrap.css" 
] 
}, 
... 
] 

을 어떻게 app.html에서 그것을 필요로하는 :

{ 
"name": "d3", 
"path": "../node_modules/d3/build", 
"main": "d3.js" 
}, 

가 그럼 난 내 구성 요소의 .js 파일

import * as d3 from d3 

[편집] 그냥 눈치 튜토리얼에서 사용할 수있었습니다 :

<require from="bootstrap/css/bootstrap.css"></require> 

0 나는 성공적 D3를 위해 동일한 작업을 수행 할 수 있었다 링크는 위의 허용 된 답변에 포함되었지만 jquery/bootstrap을 추가하기위한 실제 코드를 보여 주므로 편집 후에도 OP 예제에 누락 된 일부 요소가 있습니다.

+0

모든 단계를 재현했습니다. "Bootstrap 's JavaScript jQuery가 필요합니다"라는 오류 메시지가 계속 표시됩니다. 나는 CLI로 만든 새로운 프로젝트에있다. – alearg

+0

@alearg 프로젝트를 임시 공개 저장소에 게시하거나 위치를 업로드 할 수 있습니까? 그렇게 쉽게 디버깅/피드백을 줄 수 있습니다. 또한 프로젝트에 라이브러리를 추가하는 방법에 대한 자세한 설명은 [auerlia-cli README.md] (https://github.com/aurelia/cli) – mauricio777

+0

에서 확인할 수 있습니다. 시간 내 주셔서 감사합니다. 내 문제의 이유를 여기에서 살펴보십시오 – alearg

관련 문제