지난 주, 나는 CMS 시스템을 구축하여 돛스 프레임 워크와 연락을 취하고 ORM의 개념을 배웠습니다. 이번 주에 우리는 백그라운드 데이터 상호 작용에 깊이 들어가기 시작했고 20 프레임 워크의 데이터 구조가 돛 (예 : 노드 및 카테고리)에서 설계되었음을 발견했습니다. 나는 나의 선배가 훌륭하다고 말해야한다. 그러나 복잡성도 증가했습니다. DTREE 프로젝트의 저의 임무는 돛을 사용하여 비즈니스 프로세스 및 데이터베이스와 상호 작용하는 것입니다. 이번 주에는 돛을 사용하는 것입니다.
돛 소개
Sails는 Ruby on Rails와 같으며 웹 개발을 간단하게 만드는 프레임 워크이기도합니다. 이 기간 동안 아는 한, Express & Socket.io의 일부 API를 완전히 상속하고 통합 데이터베이스 상호 작용에 Waterline (ORM)을 사용하여 CRUD 작업을 직접 수정하지 않고 다른 데이터베이스 환경에서 완료 할 수 있도록; 전면 및 후면의 데이터를 백본 프레임 워크와 동기화하고 정책 미들웨어를 사용하여 자체 청사진의 상호 작용을 안전하게 확인합니다. 전면 및 백엔드에서 단일 코드 라인없이 RESTFull API를 통해 상호 작용할 수 있습니다.
socket.io & Express
프론트 엔드는이 두 가지를 제 시간에 배웠습니다. 하나는 Websock Communication이고 다른 하나는 HTTP 요청을 처리하는 것입니다. 돛은 재 설계되지 않았지만이 두 도구를 사용하여 이러한 기능을 직접 처리하여 학습 비용을 많이 줄입니다. socket.io는 메시지를 트리거하고 메시지를 듣고 서버와 클라이언트 모두에서 그에 따라 작업을 수행합니다.
코드 사본은 다음과 같습니다.
`
// 서버 측
io.sockets.on ( "Connection", function (sock) {
SOCK.EMIT ( "NormalMessage", {A : "C"});
});
// 고객 서비스
SOCK.ON ( "NormalMessage", function (json) {...});
`
Express의 기능은 App.get ( '/login', function (req, res) {})와 같은 라우팅 작업에 있습니다.
청사진 및 백본을 항해합니다
웹 개발에서 CRUD는 HTTP의 Get/Post 및 데이터베이스에서 선택/삽입과 같은 유사한 유형의 작업입니다. SAILS의 Blueprint API와 JS의 백본 프레임 워크는 모두 Unified Class of 함수 (예 : FindOne)를 사용하므로 프로그램이 모델과 해당 컨트롤러를 설정할 때 내부 논리가 이미 설정되어 있습니다. 예를 들어, 일반적으로 사용되는 사용자 모델은 항해에 컨트롤러를 구축하여 사용자의 데이터를 통과하고 저장했습니다. 주의를 기울여야 할 것은 파일 이름의 사양 및 비즈니스 프로세스입니다. 원래 메소드를 재정의 (과부하)하려면 괜찮습니다. 구성 폴더의 경로에서 작업 및 컨트롤러를 설정 한 후 해당 컨트롤러에 필요한 기능을 추가 할 수 있습니다.
흘수선
SAILS 종속 패키지의 API는 Create (), FindOne (), Update () 등과 같은 데이터베이스와 상호 작용하는 데 사용됩니다. 앞에서 언급했듯이 이러한 방법을 직접 균일하게 호출 할 수있는 다양한 데이터베이스 도구에 대해 걱정할 필요가 없습니다. 예를 들어, 데이터를 입력 할 때
코드 사본은 다음과 같습니다.
`
사용자.
if (오류) {
res.send (500, {error : "db error"});
} 또 다른 {
req.session.user = 사용자;
Res.Send (사용자);
}
`
기본 시스템은 로컬 파일 시스템에 데이터를 저장하는 것입니다. MySQL 또는 MongoDB를 선택 해야하는 경우. 구성 파일에서 수정하고 데이터와 상호 작용하려면 데이터베이스 어댑터를 선택하십시오.
정책
컨트롤러의 미들웨어에 적용되면 HTTP 요청이 발행되기 전에 실행됩니다. 예를 들어, 신원 제어는 달성 할 수 있습니다. 예를 들어 로그인하는 경우 다음 작업 만 수행 할 수 있습니다.
코드 사본은 다음과 같습니다.
`
if (req.session.user) {
var action = req.options.action;
if (action == "create") {
req.body.userid = req.session.user.id;
req.body.username = req.session.user.username;
}
다음();
}또 다른{
Res.Send ( "귀하는 로그인해야합니다", 403);
}
`
다음
돛은 성공적으로 시작되었지만 여전히 더 열심히 일해야합니다. 탄탄한 기초를 마련 함으로써만 특정 요구를 달성 할 수 있습니다. 따라서 학습을 계속하고, 돛을 깊이 배우기 위해 더 많은 루틴을 찾아, 또한이 프레임 워크의 한계를 알아야합니다.