เดกเต‹เด•เตเด•เดฑเดฟเตฝ VueJS + NodeJS + MongoDB เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเด™เตเด™เดจเต† เดชเดพเด•เตเด•เต‡เดœเต เดšเต†เดฏเตเดฏเดพเด‚

เดกเต‹เด•เตเด•เดฑเดฟเตฝ VueJS + NodeJS + MongoDB เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดŽเด™เตเด™เดจเต† เดชเดพเด•เตเด•เต‡เดœเต เดšเต†เดฏเตเดฏเดพเด‚
เดฎเตเดฎเตเดชเดคเตเดคเต† เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดžเดพเตป เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดšเต. เด’เดฐเต เดชเตเดคเดฟเดฏ เดŸเต€เดฎเดฟเดฒเต† เด†เดฆเตเดฏ เดฆเดฟเดตเดธเด™เตเด™เตพ เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด‡เดคเต‡ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดคเดจเตเดจเต† เดชเต‹เด•เตเดจเตเดจเต: เดฌเดพเด•เตเด•เตปเดกเตผ เดŽเดจเตเดจเต‹เดŸเตŠเดชเตเดชเด‚ เด‡เดฐเตเดจเตเดจเต, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเตเด‚ เดฎเดพเดจเตเดคเตเดฐเดฟเด• เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดจเดŸเดคเตเดคเตเดจเตเดจเต. เดซเตเดฐเดฃเตเดŸเต เดŽเตปเดกเต เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเตผเด•เตเด•เต เดกเต‹เด•เตเด•เตผ เด’เดดเดฟเดšเตเดšเตเด•เต‚เดŸเดพเดจเดพเดตเดพเดคเตเดคเดคเดพเดฃเต เด•เดพเดฐเดฃเด‚... เดฌเดพเด•เตเด•เต†เตปเดกเต เดชเดฒเดชเตเดชเต‹เดดเตเด‚ PHP/Java/Python/C# เดธเตเดฑเตเดฑเดพเด•เตเด•เตเด•เดณเตเดŸเต† เดตเดฟเดถเดพเดฒเดฎเดพเดฏ เดถเตเดฐเต‡เดฃเดฟเดฏเดฟเตฝ เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดŽเดฒเตเดฒเดพเด‚ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดพเดจเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเตเด‚ เดซเตเดฐเดฃเตเดŸเต เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เดฌเดพเด•เตเด•เต†เตปเดกเดฟเดจเตเดฑเต† เดถเตเดฐเดฆเตเดง เดคเดฟเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เดธเตเดคเดพเดฐเตเดฏเดฎเดพเดฏ เดตเดฟเดจเตเดฏเดพเดธเด‚, เดฒเต‹เด—เตเด•เตพ, เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเดกเต เดŸเต†เดธเตเดฑเตเดฑเตเด•เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเดณเตเดณ เดกเต‹เด•เตเด•เตผ-เดœเต†เด™เตเด•เดฟเตปเดธเต เด•เต‹เดฎเตเดชเดฟเดจเต‡เดทเตป เด’เดฐเดฟเดŸเดคเตเดคเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดžเดพเตป เด•เดฃเตเดŸเดคเต.

เดกเต‹เด•เตเด•เดฑเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดตเดฟเดถเดฆเดฎเดพเดฏ เดจเดฟเดฐเดตเดงเดฟ เดฒเต‡เด–เดจเด™เตเด™เตพ เดŽเดดเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดˆ เดฒเต‡เด–เดจเด‚ VueJS/Vue เดฑเต‚เดŸเตเดŸเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดธเดฟเด‚เด—เดฟเตพ เดชเต‡เดœเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚, เดธเต†เตผเดตเตผ เดญเดพเด—เด‚ NodeJS เด‰เดณเตเดณ เด’เดฐเต RESTful API เดฐเต‚เดชเดคเตเดคเดฟเดฒเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† MongoDB เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เดพเดจเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเด‚ เดกเต‹เด•เตเด•เตผ เด•เดฎเตเดชเต‹เดธเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เดกเต‹เด•เตเด•เตผ เด†เดตเดถเตเดฏเดฎเดพเดฃเต

เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เดกเต‹เด•เตเด•เตผ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดกเดตเดฒเดชเตเดชเตผเด•เตเด•เต เด‡เดจเดฟ เดธเตเดตเดจเตเดคเดฎเดพเดฏเดฟ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเตเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด…เดตเดจเตเดฑเต† เดฎเต†เดทเต€เดจเดฟเดฒเต† เดชเดคเดฟเดชเตเดชเต เดชเตŠเดฐเตเดคเตเดคเด•เตเด•เต‡เดŸเต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเดฟเดฒเตเดฒ. เดจเดฟเด™เตเด™เตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เดกเต‹เด•เตเด•เตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต เด•เตบเดธเต‹เดณเดฟเตฝ 1-2 เด•เดฎเดพเตปเดกเตเด•เตพ เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตเดฏเตเด•. เด‡เดคเดฟเดจเตเดณเตเดณ เดเดฑเตเดฑเดตเตเด‚ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดฎเดพเดฏ เดฎเดพเตผเด—เด‚ เดฒเดฟเดจเด•เตเดธเดฟเดฒเดพเดฃเต.

เด†เดฎเตเด–เด‚

เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด• เดกเต‹เด•เตเด•เตผ เด’เดชเตเดชเด‚ เดกเต‹เด•เตเด•เตผ เดฐเดšเดฟเด•เตเด•เตเดจเตเดจเต

เดซเต‹เตพเดกเตผ เด˜เดŸเดจ

เด•เตเดฒเดฏเดจเตเดฑเต, เดธเต†เตผเดตเตผ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ 2 เดซเต‹เตพเดกเดฑเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. .yml เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดฎเตเดณเตเดณ เด’เดฐเต เดซเดฏเตฝ เด’เดฐเต เด•เต‹เตบเดซเดฟเด—เดฑเดพเดฃเต เดกเต‹เด•เตเด•เตผ เดฐเดšเดฟเด•เตเด•เตเด•, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ เดจเดฟเตผเดตเดšเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฌเดจเตเดงเดชเตเดชเต†เดŸเตเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฟเดŸเดคเตเดคเต.
Docker-compose.yml:

version: "3"
services:
  mongo:
    container_name: mongo
    hostname: mongo
    image: mongo
    ports:
      - "27017:27017"
  server:
    build: server/
    #command: node ./server.js #ะทะดะตััŒ ะผะพะถะฝะพ ะฟะตั€ะตะทะฐะฟะธัะฐั‚ัŒ CMD ะธะท Dockerfile ะฒ /server
    ports:
      - "3000:3000"
    links:
      - mongo
  client:
    build: client/
    #command: http-server ./dist #ะทะดะตััŒ ะผะพะถะฝะพ ะฟะตั€ะตะทะฐะฟะธัะฐั‚ัŒ CMD ะธะท Dockerfile ะฒ /client
    network_mode: host
    ports:
      - "8089:8089"
    depends_on:
      - server

เดžเด™เตเด™เตพ เดกเต‹เด•เตเด•เดฑเดฟเตฝ 3 เดธเต‡เดตเดจเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต: NodeJS, MongoDB, Vue-เดฏเดฟเดฒเต† เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดธเต‡เดตเดจเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดตเดฏเตเด•เตเด•เดพเดฏเดฟ. เด•เตเดฒเดฏเดจเตเดฑเต เดธเต†เตผเดตเดฑเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดšเต‡เตผเดคเตเดคเต เดธเต†เตผเดตเดฑเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดฎเต‹เด‚เด—เต‹เดกเดฟเดฌเดฟเดฏเต† เดธเต†เตผเดตเตผ เดŽเดชเดฟเดเดฏเตเดฎเดพเดฏเดฟ เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตเดฏเดพเตป, เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดฒเดฟเด™เตเด•เตเด•เตพ เดฎเต‹เด‚เด—เต‹. เดธเต†เตผเดตเตผ, เด•เตเดฒเดฏเดจเตเดฑเต, เดฎเต‹เด‚เด—เต‹ - เดธเต‡เดตเดจเด™เตเด™เดณเตเดŸเต† เดชเต‡เดฐเตเด•เตพ.

VueJS เด•เตเดฒเดฏเดจเตเดฑเต

เดซเต‹เตพเดกเดฑเดฟเตฝ /เด•เด•เตเดทเดฟ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป VueJS เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดคเดพเดฃเต. เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดพเดฃเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเดšเตเดšเดคเต เดตเตเดฏเต‚ เด•เตเดฒเดฟ. เด’เดฐเต เด‡เดฎเต‡เดœเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด•เตเดฒเดฏเดจเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดซเต‹เตพเดกเดฑเดฟเดฒเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดฟเด•เต เดซเดฏเดฒเตเด•เดณเดฟเดฒเต‡เด•เตเด•เดพเดฃเต เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต / dist. เด’เดฐเต เด‡เดฎเต‡เดœเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เด•เต‚เดŸเตเดŸเด‚ เด•เดฎเดพเตปเดกเตเด•เตพ เดกเต‹เด•เตเด•เตผเดซเดฟเตฝ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเดจเตเดจเต:

FROM node:10
WORKDIR /client
COPY ./package*.json ./
RUN npm install
RUN npm install -g http-server
COPY . .
RUN npm run build
EXPOSE 8081
CMD ["npm", "test:dev"]

เดชเดพเด•เตเด•เต‡เดœเต.json เดฎเดฑเตเดฑเต เดชเตเดฐเต‹เดœเด•เตโ€Œเดฑเตเดฑเต เดซเดฏเดฒเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดชเด•เตผเดคเตเดคเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•. เด‡เดคเต เดชเต†เตผเดซเต‹เดฎเตปเดธเดฟเดจเดพเดฏเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดตเต€เดฃเตเดŸเตเด‚ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ /node_modules เดซเต‹เตพเดกเดฑเดฟเดฒเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚. เด“เดฐเต‹ เด•เดฎเดพเตปเดกเต เดฒเตˆเดจเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เด•เดพเดทเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เด…เดตเดธเดพเดจเดฎเดพเดฏเดฟ, เด•เดฃเตเดŸเต†เดฏเตเดจเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต npm run dev. เดชเดพเด•เตเด•เต‡เดœเต.json-เตฝ เดˆ เด•เดฎเดพเตปเดกเต เดตเดฟเดตเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต:


"scripts": {
	 "test:dev": "http-server dist -p 8081 -c 1 --push-state"
}

เด’เดฐเต เดซเต‹เตพเดกเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดซเดฏเดฒเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป / dist, เด†เด—เต‹เดณเดคเดฒเดคเตเดคเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต http-server, เด•เต‚เดŸเดพเดคเต† เดฆเต‡เดตเดพเดถเตเดฐเดฏเดคเตเดคเดฟเตฝ เดชเดพเด•เตเด•เต‡เดœเต spa-http-serverเด…เด™เตเด™เดจเต† Vue เดฑเต‚เดŸเตเดŸเตผ เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. --push-state เดซเตเดฒเดพเด—เต index.html-เดฒเต‡เด•เตเด•เต เดฑเต€เดกเดฏเดฑเด•เตโ€ŒเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. 1 เดธเต†เด•เตเด•เตปเดกเต เดฎเต‚เดฒเตเดฏเดฎเตเดณเตเดณ -c เดซเตเดฒเดพเด—เต เดšเต‡เตผเดคเตเดคเต http-เดธเต†เตผเดตเตผ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เตพ เด•เดพเดทเต† เดšเต†เดฏเตเดคเดฟเดฒเตเดฒ. เด‡เดคเตŠเดฐเต เดชเดฐเต€เด•เตเดทเดฃ เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฃเต; เด’เดฐเต เดฏเดฅเดพเตผเดคเตเดฅ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ nginx เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต.

Vuex เดธเตเดฑเตเดฑเต‹เดฑเดฟเตฝ เดžเด™เตเด™เตพ เด’เดฐเต เดซเต€เตฝเดกเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต apiHost: 'http://localhost:3000', NodeJS Api เดชเต‹เตผเดŸเตเดŸเต เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดฟเดŸเดคเตเดคเต. เด•เตเดฒเดฏเดจเตเดฑเต เดญเดพเด—เด‚ เดคเดฏเตเดฏเดพเดฑเดพเดฃเต. เด‡เดชเตเดชเต‹เตพ เด•เตเดฒเดฏเดจเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดฟเดจเตเดจเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เดณเตเด‚ เดˆ url-เดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเดจเตเดจเต.

NodeJS เดธเต†เตผเดตเตผ API

เดซเต‹เตพเดกเดฑเดฟเตฝ /server เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป server.js เด’เดชเตเดชเด‚ เดกเต‹เด•เตเด•เตผเดซเดฏเดฒเตเด‚:


FROM node:10
WORKDIR /server
COPY ./package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

ะ’ server.js เดธเต‚เดšเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต URL เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเดพเดฏเดฟ const url = 'mongodb://mongo:27017/';. เด•เตเดฒเดฏเดจเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เด•เตเดฐเต‹เดธเต-เดกเตŠเดฎเต†เดฏเตเตป เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต:


const clientUrl = 'http://localhost:8081';
const corsOptions = {
  origin: clientUrl,
  optionsSuccessStatus: 200, // some legacy browsers (IE11, various SmartTVs) choke on 204
};
app.use(cors());
app.all('/*', (req, res, next) => {
  res.header('Access-Control-Allow-Origin', clientUrl);
  res.header('Access-Control-Allow-Headers', 'X-Requested-With');
  next();
});
  app.get('/getProducts', cors(corsOptions), (req, res) => {
    products.getContent
      .then(data => res.json(data), err => res.json(err));
  });
  app.get('/getUsers', cors(corsOptions), (req, res) => {
    db.getUsers()
      .then(data => res.json(data), err => res.json(err));
  });

เดคเต€เดฐเตเดฎเดพเดจเด‚

เด‡เดจเดฟ เดจเดฎเตเด•เตเด•เต เดชเตเดฐเตŠเดœเด•เตเดฑเตเดฑเต เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเด‚ docker-compose build เดšเดฟเดคเตเดฐเด™เตเด™เตพ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ docker-compose up เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป. เดŸเต€เด‚ 3 เด•เดฃเตเดŸเต†เดฏเตเดจเดฑเตเด•เตพ เด‰เดฏเตผเดคเตเดคเตเด‚: เดธเต†เตผเดตเตผ, เด•เตเดฒเดฏเดจเตเดฑเต, เดฎเต‹เด‚เด—เต‹. เด’เดฐเต NodeJS เดธเต†เตผเดตเดฑเดฟเดจเดพเดฏเดฟ, เดฏเต‚เดธเตผ เดซเต‹เตพเดกเดฑเดฟเดฒเต‡เด•เตเด•เต เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตโ€Œเดคเต เดนเต‹เดŸเตเดŸเต-เดฑเต€เดฒเต‹เดกเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเด‚. เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเตเด•เตŠเดฃเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฒเดฏเดจเตเดฑเต เดนเต‹เดŸเตเดŸเต เดฑเต€เดฒเต‹เดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เดฒเต‹เดžเตเดšเต เดšเต†เดฏเตเดฏเดฃเด‚, เดชเตเดฐเดคเตเดฏเต‡เด•เด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดธเต†เตผเดตเตผ ะธ เดฎเต‹เด™เตเด•เต‹. เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดธเต‡เดตเดจเด‚ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เด…เดคเดฟเดจเตเดฑเต† เดชเต‡เดฐเต เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเด• docker-compose up client. เดšเดฟเดฒเดชเตเดชเต‹เตพ เด…เดคเต เดšเต†เดฏเตเดฏเดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต prune เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเดฑเตเด•เตพ, เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เตพ, เด‡เดฎเต‡เดœเตเด•เตพ เดŽเดจเตเดจเดฟเดต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเต.

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเตเดดเตเดตเตป เด•เต‹เดกเตเด‚ เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚ เด‡เดตเดฟเดŸเต†. เดชเดฆเตเดงเดคเดฟ เด‡เดชเตเดชเต‹เดดเตเด‚ เดตเดฟเด•เดธเดจ เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเดพเดฃเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•