Rails 스타일의 자바 스크립트 프레임 워크 "Yosami"를 만들었습니다.
11397 단어 RailsHelloWorld자바스크립트Mithril.js프레임워크
요사미
Yosami는 Mithril.js를 기반으로 한 SSR + SPA 프레임 워크입니다.
Mithril.js라고 하면 경량 & 고속의 프레임워크(참고: 가장 빠른 MVC 프레임 워크 Mithril.js의 속도 비밀 )입니다만,
그 Mithril.js를 코어에 사용해 경량 & 고속의 혜택을 받으면서, Rails의 기본 이념 「DRY 원칙과 CoC 원칙」에 따라서 코드를 쓸 수 있도록 한, 이른바 Mithril on Rails입니다.
이번은 Hello! World
적인 프로젝트를 만들면서, yosami의 촉감을 조금만 소개합니다.
가정 환경
설치
단 몇 단계만으로 설치가 완료됩니다.
# インストール先ディレクトリの作成と移動
mkdir example-yosami && cd example-yosami
# yosamiパッケージのインストール
npm init -y && npm install --save-dev yosami
# yosamiのインストール
./node_modules/.bin/yosami
설치가 완료되면 이러한 rails 감도는 구성이 됩니다.
페이지 만들기
rails
로 말한다 rails g scaffold
적인 명령으로, 페이지를 만들어 갑니다.
npm run generate controller hello
Hello! World를 표시하기 위한 컨트롤러, 루트, 뷰, 테스트 등이 자동으로 정의됩니다.
시작해보기
즉시 다음 명령으로 개발 서버를 시작합니다.
npm run dev
http://localhost:3001/hello
로 이동하면 방금 만든 hello 페이지가 나타납니다.
일부 환경에서는 처음 컴파일하는 데 시간이 걸립니다.
프로덕션 서버에서 시작
다음은 SSR + SPA
로 동작하는 프로덕션 서버를 기동해 봅니다.
npm start # `npm run build && npm run prod` と同等
액세스하고 코드를 확인하면 태그가 렌더링되는지 확인할 수 있다고 생각합니다.
프로덕션 서버는 캐시 기구나, js/css의 압축, CSS를 자동으로 인라인화하는 구조가 포함되어 있어 PageSpeed Insights로 고득점을 노리는 구성으로 되어 있습니다.
이 최적화 기법은 과거와 관련된 여러 제품에서 사용되었으며 GTM과 같은 집계 태그가 포함되어 있어도 높은 점수를 얻습니다.
(외부 벤더의 집계용 태그가 없으면 100점을 취할 수 있습니다.)
페이지를 다시 작성해 봅니다.
좀 더 Hello!World다운 페이지로 갑니다.
그건 그렇고, 개발하는 동안 개발 서버를 시작하십시오. JS는 LiveReload, CSS는 HMR로 수정이 자동 반영됩니다.
표시 내용과 제목 변경
app/views/controllers/hello.js
를 편집합니다.
module.exports = function(controller, pipe, _yield) {
pipe.title = 'YOSAMI PAGE';
return (
<div class='controllers/hello'>
Hello! yosami
</div>
);
};
pipe
에서 상위 레이어( views/controllers/appliation.js
)에 데이터를 전달하여 제목 변경 합니다.
루트 편집
/
에서 페이지가 표시되도록 config/route.js
를 편집합니다.
TrackRouter.configure(() => {
get('/', {to: 'hello', as: 'hello'});
});
스타일 수정
app/assets/styles/controllers/hello.scss
를 편집합니다.
.controllers\/hello {
color: #333;
font-size: 24px;
font-weight: bold;
};
위의 변경 사항을 추가하여 http://localhost:3001/
에 액세스하면 수정 사항이 반영되는지 확인할 수 있다고 생각합니다.
클릭으로 인사
Hello! yosami
를 클릭하면 인사를 내고 인사 횟수를 표시해 봅니다.
뷰 모델 편집
app/view_models/controllers/hello.js
에 인사 횟수 저장 greetings
속성을 추가합니다.
module.exports = class Hello extends ApplicationViewModel {
static definer() {
name('hello');
accessor('greetings');
}
}
컨트롤러 편집
app/controllers/hello_controller.js
에 인사 표시 및 횟수를 계산하는 greet
함수를 추가합니다.
module.exports = class HelloController extends ApplicationController {
static definer() {
name('hello');
}
greet() {
alert('Hello!');
this.vm.greetings = (this.vm.greetings || 0) + 1;
}
}
뷰 편집
app/views/controllers/hello.js
에 onclick
이벤트 설정과 인사 횟수를 표시하는 코드를 추가합니다.
module.exports = function(controller, pipe, _yield) {
pipe.title = 'YOSAMI PAGE';
return (
<div class='controllers/hello' onclick={controller.greet.bind(controller)}>
Hello! yosami
<p>{ (this.greetings || 0) }greetings</p>
</div>
);
};
수정이 완료되면 Hello! yosami
를 클릭해 봅시다!
잘 움직였습니까?
여기까지의 내용은 이 커밋 입니다.
미래에 대해
끝까지 교제 해 주셔서 감사합니다.
이번은 정말로 만질 정도의 내용이었습니다만, 문서를 쓰면서, 기능 소개의 기사를 써 가면 된다고 생각하고 있습니다.
그렇다면 시험해보십시오
# インストール先ディレクトリの作成と移動
mkdir example-yosami && cd example-yosami
# yosamiパッケージのインストール
npm init -y && npm install --save-dev yosami
# yosamiのインストール
./node_modules/.bin/yosami
rails
로 말한다 rails g scaffold
적인 명령으로, 페이지를 만들어 갑니다.npm run generate controller hello
Hello! World를 표시하기 위한 컨트롤러, 루트, 뷰, 테스트 등이 자동으로 정의됩니다.
시작해보기
즉시 다음 명령으로 개발 서버를 시작합니다.
npm run dev
http://localhost:3001/hello
로 이동하면 방금 만든 hello 페이지가 나타납니다.
일부 환경에서는 처음 컴파일하는 데 시간이 걸립니다.
프로덕션 서버에서 시작
다음은 SSR + SPA
로 동작하는 프로덕션 서버를 기동해 봅니다.
npm start # `npm run build && npm run prod` と同等
액세스하고 코드를 확인하면 태그가 렌더링되는지 확인할 수 있다고 생각합니다.
프로덕션 서버는 캐시 기구나, js/css의 압축, CSS를 자동으로 인라인화하는 구조가 포함되어 있어 PageSpeed Insights로 고득점을 노리는 구성으로 되어 있습니다.
이 최적화 기법은 과거와 관련된 여러 제품에서 사용되었으며 GTM과 같은 집계 태그가 포함되어 있어도 높은 점수를 얻습니다.
(외부 벤더의 집계용 태그가 없으면 100점을 취할 수 있습니다.)
페이지를 다시 작성해 봅니다.
좀 더 Hello!World다운 페이지로 갑니다.
그건 그렇고, 개발하는 동안 개발 서버를 시작하십시오. JS는 LiveReload, CSS는 HMR로 수정이 자동 반영됩니다.
표시 내용과 제목 변경
app/views/controllers/hello.js
를 편집합니다.
module.exports = function(controller, pipe, _yield) {
pipe.title = 'YOSAMI PAGE';
return (
<div class='controllers/hello'>
Hello! yosami
</div>
);
};
pipe
에서 상위 레이어( views/controllers/appliation.js
)에 데이터를 전달하여 제목 변경 합니다.
루트 편집
/
에서 페이지가 표시되도록 config/route.js
를 편집합니다.
TrackRouter.configure(() => {
get('/', {to: 'hello', as: 'hello'});
});
스타일 수정
app/assets/styles/controllers/hello.scss
를 편집합니다.
.controllers\/hello {
color: #333;
font-size: 24px;
font-weight: bold;
};
위의 변경 사항을 추가하여 http://localhost:3001/
에 액세스하면 수정 사항이 반영되는지 확인할 수 있다고 생각합니다.
클릭으로 인사
Hello! yosami
를 클릭하면 인사를 내고 인사 횟수를 표시해 봅니다.
뷰 모델 편집
app/view_models/controllers/hello.js
에 인사 횟수 저장 greetings
속성을 추가합니다.
module.exports = class Hello extends ApplicationViewModel {
static definer() {
name('hello');
accessor('greetings');
}
}
컨트롤러 편집
app/controllers/hello_controller.js
에 인사 표시 및 횟수를 계산하는 greet
함수를 추가합니다.
module.exports = class HelloController extends ApplicationController {
static definer() {
name('hello');
}
greet() {
alert('Hello!');
this.vm.greetings = (this.vm.greetings || 0) + 1;
}
}
뷰 편집
app/views/controllers/hello.js
에 onclick
이벤트 설정과 인사 횟수를 표시하는 코드를 추가합니다.
module.exports = function(controller, pipe, _yield) {
pipe.title = 'YOSAMI PAGE';
return (
<div class='controllers/hello' onclick={controller.greet.bind(controller)}>
Hello! yosami
<p>{ (this.greetings || 0) }greetings</p>
</div>
);
};
수정이 완료되면 Hello! yosami
를 클릭해 봅시다!
잘 움직였습니까?
여기까지의 내용은 이 커밋 입니다.
미래에 대해
끝까지 교제 해 주셔서 감사합니다.
이번은 정말로 만질 정도의 내용이었습니다만, 문서를 쓰면서, 기능 소개의 기사를 써 가면 된다고 생각하고 있습니다.
그렇다면 시험해보십시오
npm run dev
npm start # `npm run build && npm run prod` と同等
좀 더 Hello!World다운 페이지로 갑니다.
그건 그렇고, 개발하는 동안 개발 서버를 시작하십시오. JS는 LiveReload, CSS는 HMR로 수정이 자동 반영됩니다.
표시 내용과 제목 변경
app/views/controllers/hello.js
를 편집합니다.module.exports = function(controller, pipe, _yield) {
pipe.title = 'YOSAMI PAGE';
return (
<div class='controllers/hello'>
Hello! yosami
</div>
);
};
pipe
에서 상위 레이어( views/controllers/appliation.js
)에 데이터를 전달하여 제목 변경 합니다.루트 편집
/
에서 페이지가 표시되도록 config/route.js
를 편집합니다.TrackRouter.configure(() => {
get('/', {to: 'hello', as: 'hello'});
});
스타일 수정
app/assets/styles/controllers/hello.scss
를 편집합니다..controllers\/hello {
color: #333;
font-size: 24px;
font-weight: bold;
};
위의 변경 사항을 추가하여
http://localhost:3001/
에 액세스하면 수정 사항이 반영되는지 확인할 수 있다고 생각합니다.클릭으로 인사
Hello! yosami
를 클릭하면 인사를 내고 인사 횟수를 표시해 봅니다.
뷰 모델 편집
app/view_models/controllers/hello.js
에 인사 횟수 저장 greetings
속성을 추가합니다.
module.exports = class Hello extends ApplicationViewModel {
static definer() {
name('hello');
accessor('greetings');
}
}
컨트롤러 편집
app/controllers/hello_controller.js
에 인사 표시 및 횟수를 계산하는 greet
함수를 추가합니다.
module.exports = class HelloController extends ApplicationController {
static definer() {
name('hello');
}
greet() {
alert('Hello!');
this.vm.greetings = (this.vm.greetings || 0) + 1;
}
}
뷰 편집
app/views/controllers/hello.js
에 onclick
이벤트 설정과 인사 횟수를 표시하는 코드를 추가합니다.
module.exports = function(controller, pipe, _yield) {
pipe.title = 'YOSAMI PAGE';
return (
<div class='controllers/hello' onclick={controller.greet.bind(controller)}>
Hello! yosami
<p>{ (this.greetings || 0) }greetings</p>
</div>
);
};
수정이 완료되면 Hello! yosami
를 클릭해 봅시다!
잘 움직였습니까?
여기까지의 내용은 이 커밋 입니다.
미래에 대해
끝까지 교제 해 주셔서 감사합니다.
이번은 정말로 만질 정도의 내용이었습니다만, 문서를 쓰면서, 기능 소개의 기사를 써 가면 된다고 생각하고 있습니다.
그렇다면 시험해보십시오
module.exports = class Hello extends ApplicationViewModel {
static definer() {
name('hello');
accessor('greetings');
}
}
module.exports = class HelloController extends ApplicationController {
static definer() {
name('hello');
}
greet() {
alert('Hello!');
this.vm.greetings = (this.vm.greetings || 0) + 1;
}
}
module.exports = function(controller, pipe, _yield) {
pipe.title = 'YOSAMI PAGE';
return (
<div class='controllers/hello' onclick={controller.greet.bind(controller)}>
Hello! yosami
<p>{ (this.greetings || 0) }greetings</p>
</div>
);
};
끝까지 교제 해 주셔서 감사합니다.
이번은 정말로 만질 정도의 내용이었습니다만, 문서를 쓰면서, 기능 소개의 기사를 써 가면 된다고 생각하고 있습니다.
그렇다면 시험해보십시오
Reference
이 문제에 관하여(Rails 스타일의 자바 스크립트 프레임 워크 "Yosami"를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/alfa/items/2cc6eabc267787a3786a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)