เจกเฉŒเจ•เจฐ เจตเจฟเฉฑเจš 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 เจตเจฟเฉฑเจš เจธเจฅเจฟเจฐ เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฒเจˆเฅค เจ•เจฒเจพเจ‡เฉฐเจŸ เจจเฉ‚เฉฐ เจธเจฐเจตเจฐ เจจเจพเจฒ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจ เจฒเจˆ เจœเฉ‹เฉœเจฟเจ† เจ—เจฟเจ† เจธเจฐเจตเจฐ 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเจพ เจนเฉˆ. MongoDB เจจเฉ‚เฉฐ เจธเจฐเจตเจฐ API เจจเจพเจฒ เจฒเจฟเฉฐเจ• เจ•เจฐเจจ เจฒเจˆ, เจตเจฐเจคเฉ‹เจ‚ เจฎเฉ‹เจ‚เจ—เฉ‹ เจจเฉ‚เฉฐ เจฒเจฟเฉฐเจ• เจ•เจฐเจฆเจพ เจนเฉˆ. เจธเจฐเจตเจฐ, เจ•เจฒเจพเจ‡เฉฐเจŸ, เจฎเฉ‹เจ‚เจ—เฉ‹ - เจธเฉ‡เจตเจพเจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจฎเฅค

VueJS เจ•เจฒเจพเจ‡เฉฐเจŸ

เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš / เจ—เจพเจนเจ• เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ VueJS 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจนเฉˆเฅค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€ Vue Cli. เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡, เจ•เจฒเจพเจ‡เฉฐเจŸ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš เจธเจฅเจฟเจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจตเจฟเฉฑเจš เจฌเจฃเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ /เจœเจผเจฟเจฒเจพ. เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ เจ‡เฉฑเจ• เจšเจฟเฉฑเจคเจฐ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจธเจฎเฉ‚เจน เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐเจฆเจพ เจนเฉˆ:

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"]

เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ package.json เจจเฉ‚เฉฐ เจฌเจพเจ•เฉ€ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจซเจพเจˆเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เจพเจชเฉ€ เจ…เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจ‡เจน เจ•เจพเจฐเจœเจ•เฉเจธเจผเจฒเจคเจพ เจฒเจˆ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจคเจพเจ‚ เจœเฉ‹ /node_modules เจซเฉ‹เจฒเจกเจฐ เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจฃ เจตเฉ‡เจฒเฉ‡ เจ•เฉˆเจธเจผ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เฉ‡เฅค เจนเจฐเฉ‡เจ• เจ•เจฎเจพเจ‚เจก เจฒเจพเจˆเจจ เจจเฉ‚เฉฐ เจตเฉฑเจ–เจฐเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉˆเจธเจผ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ…เฉฐเจค เจตเจฟเฉฑเจš, เจœเจฆเฉ‹เจ‚ เจ•เฉฐเจŸเฉ‡เจจเจฐ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ npm run dev. เจ‡เจธ เจ•เจฎเจพเจ‚เจก เจฆเจพ เจตเจฐเจฃเจจ package.json เจตเจฟเฉฑเจš เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ:


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

เจซเฉ‹เจฒเจกเจฐ เจคเฉ‹เจ‚ เจซเจพเจˆเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ /เจœเจผเจฟเจฒเจพ, เจตเจฟเจธเจผเจต เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ http-server, เจ…เจคเฉ‡ dev-เจจเจฟเจฐเจญเจฐเจคเจพ เจตเจฟเฉฑเจš เจชเฉˆเจ•เฉ‡เจœ spa-http-serverเจคเจพเจ‚ เจœเฉ‹ Vue เจฐเจพเจŠเจŸเจฐ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เฅค --push-state เจซเจฒเฉˆเจ— index.html 'เจคเฉ‡ เจฐเฉ€เจกเจพเจ‡เจฐเฉˆเจ•เจŸ เจ•เจฐเจฆเจพ เจนเฉˆเฅค 1 เจธเจ•เจฟเฉฐเจŸ เจฆเฉ‡ เจฎเฉเฉฑเจฒ เจตเจพเจฒเจพ -c เจซเจฒเฉˆเจ— เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ http-เจธเจฐเจตเจฐ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจ•เฉˆเจธเจผ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพเฅค เจ‡เจน เจ‡เฉฑเจ• เจŸเฉˆเจธเจŸ เจ‰เจฆเจพเจนเจฐเจจ เจนเฉˆ; เจ‡เฉฑเจ• เจ…เจธเจฒเฉ€ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ 'เจคเฉ‡ nginx เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจฌเจฟเจนเจคเจฐ เจนเฉˆ.

Vuex เจธเจŸเฉ‹เจฐ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ–เฉ‡เจคเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ apiHost: 'http://localhost:3000', เจœเจฟเฉฑเจฅเฉ‡ NodeJS Api เจชเฉ‹เจฐเจŸ เจฐเจœเจฟเจธเจŸเจฐเจก เจนเฉˆเฅค เจ—เจพเจนเจ• เจฆเจพ เจนเจฟเฉฑเจธเจพ เจคเจฟเจ†เจฐ เจนเฉˆ. เจนเฉเจฃ เจ•เจฒเจพเจ‡เฉฐเจŸ เจคเฉ‹เจ‚ เจฌเฉˆเจ• เจฆเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจ‡เจธ url 'เจคเฉ‡ เจœเจพเจ‚เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

NodeJS เจธเจฐเจตเจฐ API

เจซเฉ‹เจฒเจกเจฐ เจตเจฟเฉฑเจš /server เจฌเจฃเจพเจ“ เจธเจฐเจตเจฐ .js เจ…เจคเฉ‡ เจกเฉŒเจ•เจฐเจซเจพเจˆเจฒ:


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

ะ’ เจธเจฐเจตเจฐ .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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹