02-instagramクローンエンコーディング(2)ファイル管理



符号化プログラムなしinstagramクローン符号化ショートカットhttps://nomadcoders.co/instaclone

Devide & Conqure


プロジェクトを行う上で、最も重要なのはファイルを管理する方法だと思います.家で片付けてこそ見つけやすいように.
プロジェクトもそうです.プロジェクトはますます大きくなり、ファイルを配布しなければ、今後のメンテナンスにおいても困難に直面します.
Graphqlは大量のQueryとMutationを必要とし、それらを分離し、最後に合併する.
整理する
Query、Mutationごとにフォルダを作成します=>各フォルダにtypeDefsを作成します.jsと解析器.作成(Devide)=>の後にjsをマージします.
  • npm install graphql-tools@latest:サービス提供・提供のためのインストール
  • ファイルの作成

  • client.js:PrismaClientを使用してクライアントを作成
  • schema.js:graphql-toolsは、各ファイルの内容をマージするために使用されます.
  • server.js:統合したschemaを使用したサーバ
  • // schema.js
    
    import {loadFilesSync} from "..."
    import {mergeResolvers,mergeTypeDefs} from "..."
    import {makeExecutableSchema} from "..." 
    
    // 최상위 Root경로아래의 모든 폴더안의 모든 파일들 중에서 typeDefs.js인 파일들을 가져옴 
    const loadedTypes = loadFilesSync(`${__dirname}/**/*.typeDefs.js`);
    const loadedResolvers = loadFilesSync(`${__dirname}/**/*.resolvers.js`);
    
    const typeDefs = mergeTypeDefs(loadedTypes);
    const resolvers = mergeResolvers(loadedResolvers);
    
    const schema = makeExecutableSchema({typeDefs,resolvers});
    
    export default schema;
    
    // server.js
    
    import dotenv from "dotenv";
    dotenv.config();
    import {ApolloServer} from "apollo-server";
    import schema from "./schema";
    
    const server = new ApolloServer({
      schema,
    });
    
    const PORT = process.env.PORT;
    
    server
       .listen(PORT)
       .then(()=>console.log(`Server is running on http://localhost:${PORT}/`));

    dotenv


    dotnvは外部に露出すべき情報ではないために必要である.npm install dotenv
  • 使い方:アプリケーションの第1部で指定するのがプロセスです.env.通過する.envに指定された情報を取得できます.
  • .Envはgitにアップロードされません.