Nuxt 배합 Node 의 실제 생산 에서 의 응용 상세 설명
Nuxt
이 물건 은 React 의 Next 와 유사 합 니 다.Vue 서버 에서 Nuxt 에 렌 더 링 하 는 것 이 정말 편리 합 니 다.전체 디 렉 터 리 구조 와 Vue-cli 도 차이 가 많 지 않 지만 저 는 더욱 뚜렷 하고 명료 하 다 고 생각 합 니 다.그리고 제 가 가장 좋아 하 는 상단 Loading 바,Layer 테마 템 플 릿,서버 렌 더 링 은 SEO 에 유익 하고 자동 으로 Router 를 생 성 하 는 등 다양한 설정 이 있 습 니 다.여기 서 나 는 상세 하 게 전개 하지 않 았 다.그 를 선택 한 것 은 주로 습관 을 썼 고 성능 도 좋 았 다.
Express
그것 은 바로 Koa,egg 등의 서버 도구 로 매우 편리 하 게 포장 하 는 방법 이다.여기 도 자세히 펼 쳐 지지 않 는 다.
첫 번 째 정적 페이지 완성
여기 서 HTML 을 어떻게 구축 하 는 지,Vue 사용 방법 등 과 관련 이 없 는 문 제 를 상세 하 게 설명 하지 않 습 니 다.먼저 페이지 효 과 는 다음 그림 과 같 습 니 다.
클릭 하여 수령 확인 후 백 엔 드 에 요청 을 발송 하고 쿠폰 번호 획득:
대체로 업무 절차 가 이렇다.
두 번 째 단 계 는 웹 뷰 를 기반 으로 token 인증 을 완료 합 니 다.
갑 회사 의 token 은 어떻게 사용자 에 게 주 었 습 니까?
여기 서 Session 이라는 것 을 말 해 야 합 니 다.처음에 Token 인증 을 완 료 했 을 때 두 사용자 가 동시에 방문 한 것 을 발 견 했 을 때 방문 자 는 요청 에 대응 하 는 방법 을 다시 실행 합 니 다.많은 데 이 터 를 초기 화하 거나 다시 할당 하 는 것 과 같 습 니 다.사용 자 를 어떻게 분리 해 야 할 지 전혀 모 르 고 JAVA 친구 들 에 게 물 어 봤 더 니 프레임 자체 가 분리 된다 고 해서 우울 했다.사실 그들 도 세 션 이라는 것 을 알 고 있 습 니 다.그냥 계속 이렇게 사용 하 다가 익숙해 지면 갑자기 잘 모 르 겠 고 심지어 그 존재 가 생각 납 니 다.
제 가 처음에 생각 한 것 은 쿠키 로 대응 하 는 브 라 우 저 를 검증 하 는 것 이 었 습 니 다.그러나 이런 방법 은 좀 오래 되 고 크 지 않다 고 생각 했 습 니 다.(개인 적 인 주관적 인 견해,뿌리 지 마 세 요)저장량 도 한계 가 있 습 니 다.그래서 하루 더 탐색 해 보 니 세 션 이라는 것 이 대응 하 는 브 라 우 저 를 검증 할 수 있다 는 것 을 알 게 되 었 습 니 다(알 겠 습 니 다.사실은 쿠키 를 데이터 색인 으로 하 는 것 입 니 다).알 게 되 었 습 니 다.
//
const http = require('http')
const express = require("express");
const session = require('express-session');
const nuxtapp = express(); // express
// SESSION
nuxtapp.use(session({
secret: 'key' // 128
}));
// OPTIONS (axios POST OPTION )
nuxtapp.use(function (req, res, next) {
if ('OPTIONS' === req.method) {
res.sendStatus(200);
} else {
next();
}
});
// Token
nuxtapp.get('/getphone', (req, res) => {
if (!req.query.token) {
// if else ...
res.sendStatus(200)
return;
}
// , Token , 。( )
const request = http.request({
host: "api.example.com",
headers: {
'Content-Type': ' application/json',
'Accept-Encoding': 'utf-8', //
'Accept-Language': 'zh-CN,zh;q=0.8',
'Connection': 'keep-alive',
},
path: '/getTokenorSth',
port: 'port',
method: 'POST'
}, response => {
let data = ""; //
response.on("data", function (chunk) {
data += chunk
})
response.on("end", function () { // seesion
try {
if (!req.session.id) {
// set session like : req.session.id= JSON.parse(data)
}
res.sendStatus(200)
} catch (err) {
console.log(err);
res.sendStatus(500)
}
})
}).on('error', (e) => {
console.log(` : ${e.message}`);
res.sendStatus(500)
});
// POST Data
request.write(JSON.stringify({
example:example,
token: req.query.token
})); // post
request.end();
})
nuxtapp.listen(port || 80, '0.0.0.0')
console.log(" , ―― localhost:" + port || 80)
세 번 째 서버 에이전트(여기 저도 확실 하지 않 은 점 이 있 습 니 다.타 오 바 오 노드+자바 가 이런 모델 인지 아 닌 지)저 는 아직 전단 이기 때문에 기능 적 인 실현 은 베테랑 JAVA 에 게 맡 기 겠 습 니 다.
사용자 가 방문 할 때 Node 에 요청 해 야 합 니 다.여기 서 한 가지 말씀 드 려 야 할 것 은 백 엔 드 에 많은 인 터 페 이 스 를 제공 하면 모든 앱.get('/api')이나 무엇 을 써 야 하 는 지,express 문서 에 이런 표기 법 이 언급 되 어 있 는 것 은 아 닙 니 다.
nuxtapp.all(["/api1/*","/api2/*"], requestFunction)
나머지 는 위 토 큰 검증 과 많이 다 르 지 않 습 니 다.네 번 째 단 계 는 Express 로 Nuxt 를 실행 합 니 다.
Nuxt 홈 페이지 에 도 자신 이 쓴 Node 로 실행 하 는 방법 을 알려 주 는 코드 가 일부 있 지만 완선 되 지 않 아 마음 에 들 지 않 습 니 다.제 가 여기 서 제 이 해 를 보충 하 겠 습 니 다.어디 가 잘못 썼 는 지 얼마든지 뿌 려 주세요.제 모든 사람 에 게 뿌 려 주 셔 서 감사합니다.
// nuxt
const {
Nuxt,
Builder
} = require('nuxt') //
//
const isProd = (process.env.NODE_ENV === 'production')
const port = process.env.PORT || 80
// nuxt
const config = require('./nuxt.config.js')
config.dev = !isProd;
const nuxt = new Nuxt(config);
// dev( ) ;pro( ) yanr build
if (config.dev) {
new Builder(nuxt).build()
.then(listen)
.catch((error) => {
console.error(error)
process.exit(1)
})
} else {
listen()
}
이상 의 listen 은 제 가 두 번 째,세 번 째 단계 에서 쓴 해당 인터페이스 의 express 서버 입 니 다.그러면 nuxt 는 코드 에서 실행 되 지 않 았 습 니 다.new Nuxt 는 하나의 Nuxt 인 스 턴 스 를 실행 한 후에 nuxt 방법 을 되 돌려 줍 니 다.이것 은 request,response 에 따라 해당 하 는 렌 더 링 을 수행 하 는 것 입 니 다.그 중에서 우 리 는 express()의 각종 인터페이스의 실행 순 서 를 고려 해 야 합 니 다.만약 에 처음부터 두 번 째 코드 의 get 요청 이 일치 하면...그러면 두 번 째 코드 뒤에 적 힌 all 방법 중의 각종 인 터 페 이 스 는 받 아들 일 수 없다.
내 가 고려 한 것 은 인터페이스 가 이유 없 이 실행 되 는 것 은 아니 지만 사용자 의 요청 은 반드시 발생 하 는 것 이다.그러면 사용자 가 고의로 요청 을 보 내 는 것 을 제외 하고 모두 Nuxt 가 인수 하 는 것 이다.그래서 Nuxt 는 마지막 에 페이지 를 렌 더 링 하고 사용자 에 게 전달 할 것 입 니 다.Token 을 편리 하 게 검증 하기 위해 저 는 Token 을 검증 하 라 는 요청 을 홈 페이지 에 두 고 브 라 우 저 에 Token 과 해당 하 는 정 보 를 캡 처 한 후에 Node 에 수 동 으로 로그 인 하도록 하 겠 습 니 다.(사실 nuxt 렌 더 링 전에 Token 이 존재 하 는 지 여 부 를 판단 하여 token 검증 여 부 를 결정 할 수 있 습 니 다.저 는 여기 서 더 많은 코드 를 보 여 드 리 지 않 겠 습 니 다)
상기 사고방식 을 결합 하면 마지막 에 모든 GET 요청 을 포착 하고 Nuxt 에 게 넘 기 면 됩 니 다.
// nuxt
nuxtapp.get('/*', (req, res) => {
nuxt.render(req, res)
})
Demo: jasontan.cn 이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Nuxt 구성 Element-UI 필요에 따라 도입Nuxt가create-nuxt-app을 사용하여 프로젝트를 만들 때 Element-UI를 기본 구성 요소 라이브러리로 선택하면 Nuxt가 Element-UI의 필요에 따라 설정을 도입하지 않고 스스로 설정해야 합니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.