Node.Js : CRUD - Create


同期
  • 順次進行
  • 例えば、1000人に返信する.手紙は無条件に1枚ずつ送る.
    一人に返信メールを書く1000回順番に繰り返す.
    メッセージは優先順位で送信されます.
  • 非同期
  • 日は並列処理
  • 例えば、1000人同時返信.手紙は無条件に1枚ずつ送る.
    仕事はすぐ終わりますが、誰が先に手紙を書いて、誰に先に送るか分かりません.
  • 作業効率の良さ.
  • 同期と非同期にはメリットとデメリットがあり、状況に応じて使用してこそ、独自の意思でプログラムを実施することができます.
    PM2
    npm管理ファイルのプログラム
    PM 2ホームページに接続し、npm install pm2 -gcmd入力でインストールを完了します.
    PM 2を使用すると、jsファイルを変更するたびにサーバを再起動する必要がなく、さまざまな理由でサーバが閉じたときに自動的にサーバを開くことができます.
  • pm2 start app.js=ファイルを実行する機能
  • pm2 monit=pm 2で実行中のファイルを表示する機能を使用して、実行中のファイルの状態を表示します./Qキーで出られます.
  • pm2 list=実行中のファイルリストを表示する機能
  • pm2 stop name=入力ファイルを閉じる機能(nameはlist)
  • pm2 start app.js --watch=ファイル実行時に修正内容をリアルタイムで反映する機能
  • pm2 log=変更やエラーを表示する機能
  • RUCD - Create
    プレイヤーがページを生成できるようにします.
    DBやMVCモードを使わずに作成するとコードが長くなって混乱しているように感じます.
    そして、学ぶほど、なぜ一つの言語を学ぶのかが分かり、次の言語を学ぶのが速くなります.
    私もJavaをたくさん学んだわけではありませんがNodeJsを勉強するときはずっとJavaと繋がって考えています
    本題に戻り、2つのページを作成し、情報を入力し、ユーザーがページを作成できます.
    // 유저가 form태그를 이용해 페이지를 만들 수 있는 페이지
    // mvc로 따지면.. contoroller로 정보를 주는 view파일이려나
    else if(pathname === '/create'){
          fs.readdir('./data', function(error, filelist){
            var title = 'WEB - create';
            var list = templateList(filelist);
            
            //form태그를 이용해 페이지를 이동하면서 정보를옮겨준다.
            var template = templateHTML(title, list, `
              <form action="http://localhost:3000/create_process" method="post">
                <p><input type="text" name="title" placeholder="title"></p>
                <p>
                  <textarea name="description" placeholder="description"></textarea>
                </p>
                <p>
                  <input type="submit">
                </p>
              </form>
            `);
            response.writeHead(200);
            response.end(template);
          });
        }
      
      //페이지를 만들어주고, 메인 페이지로 다시 돌아가게해줌
    //MVC가 다 들어갔다고 해야하나.. DB가 없긴 하지만 파일을 만들긴 하니까 뭐..
      else if(pathname === '/create_process'){
          var body = '';
          request.on('data', function(data){
              body = body + data;
          });
          request.on('end', function(){
              var post = qs.parse(body);
              var title = post.title;
              var description = post.description;
            
            //유저가 입력한 정보를 가져와 DATA폴더에 파일을 만들어준다.
            
            //파일을 만들고 유저에게 자신이 만든 글목록을 확인할 수 있도록 
            //페이지를 이동해준다.
              fs.writeFile(`data/${title}`, description, 'utf8', function(err){
                response.writeHead(302, {Location: `/?id=${title}`});
                response.end();
              })
          });
        }