映画APPプロジェクトのまとめ

11329 ワード

どのように改ページしますか
今回のプロジェクトでは私たちの子供の総監がページ分けの機能を作っています.ここでまとめてみたいです.
jqPaginatorプラグインを採用しました.ソースは以下の通りです.
js部分
axios.post('/allMovies').then(function (ans) {
    let mynum = parseInt((ans.data.length/16))+1;
    let str = '';
    $('.ttx-my-number').jqPaginator({
        totalPages: mynum,
        visiblePages: 20,
        currentPage: 1,
        onPageChange: function (num, type) {
            let str = '';
            let mycurrentnum = (num-1)*16;
            let myendnum = num*16 - 1;
            if(myendnum > ans.data.length - 1){
                myendnum = ans.data.length - 1;
            }
            for (let i = mycurrentnum; i <=myendnum; i++) {
                str += '
'; str += `![]($ans.data[i].moviemg)`; str += `

${ans.data[i].name}${ans.data[i].score}

`; str += `
`; } $(".ttx-movie-container").empty().append(str); } }); });
html部分
解析
今回のスタイルではブックレットフレームを利用していますが、jsではjqPaginatorプラグインを利用しています.
 axios.post('/allMovies').then(function (ans) {}
axios先端からバックエンド('/all Movies')にpostデータをルーティングします.then()の関数はデータ受信後のコールバック関数です.ansは受信データで、タイプは対象です.ansのdata属性の値は配列です.
let mynum = parseInt((ans.data.length/16))+1;
ansのdata属性値の長さを求めます.
$('.ttx-my-number').jqPaginator({})
jquery方法を利用して、これはクラスにttx-my-numberのためにjs関数を呼び出します.
    totalPages: mynum,
    visiblePages: 20,
    currentPage: 1,
総ページ数はバックグラウンドからのデータmynumで、改ページの総ページ数は20で、現在のページ番号は1です.
 onPageChange: function (num, type) {}
コールバック関数は、ページを切り替える際にトリガ(初期化ページを含む)され、2つのパラメータが入ってきます.
1、「ターゲットページ」のページ番号、Numberタイプ
2、トリガタイプ、可能な値:「init」(初期化)、「change」(改ページをクリック)
let mycurrentnum = (num-1)*16;
*16代表は各ページに16映画があり、mycurrentnumはクリック後の目標ページをクリックした後にロードする必要がある最初のデータを表しています.
myendnum = num*16 - 1;
myendnumは目標ページ数をクリックして最後のデータをロードすることを表します.
if(myendnum > ans.data.length - 1){
            myendnum = ans.data.length - 1;
        }
ターゲットページにロードする必要がある最後のデータがバックグラウンドから提供されるデータよりも大きい場合、最後のデータはバックグラウンドから提供される最後のデータです.
for (let i = mycurrentnum; i <=myendnum; i++) {}
目標ページをクリックして最初のデータを最後のデータにロードするという意味です.
str += '
';

div:

![]($ans.data[i].moviemg)
div: を しても、 はリンクです.

${ans.data[i].name} ${ans.data[i].score}

div: の を し、 もリンクです.
$(".ttx-movie-container").empty().append(str);
jquery :classはttx-movie-containerであり、emptyは ttx-movie-containerに していたサブノードとそのテキスト をクリアし、apped()はttx-movie-containerに に したばかりの しいノードとコンテンツを します.
まとめ:
まずバックグランドにすべてのデータを り して、ターゲットページをクリックしたら、 にページ の のデータを にしてから、ターゲットページに な のデータを のデータにロードして、 ページしました.ページ の ができて、 もデータを しなくてもいいです.
:
いくつかの さな を できます.
ページ で :
はい、あります
 
にinputの ボックスを して、 でデータを して、 をmycurrentnumに えます.
ユーザーにページ を させる
input ボックスを することもできます.*16の16を パラメータcout(カスタム)として、 でデータを し、 をcoutに り てます.
のまとめ
のプロジェクトの は のグループが「 」、「あいまい 」、「 のあいまい 」を しました.その には したいところがあります. はよく うかもしれません.
ソースは の りです
JS
$(document).ready(function () {
    $('.cr-mysubmit').on('click',function () {
       let myselect = $('.cr-search-select').find("option:selected").html();
       let myinput  = $('.cr-myinput').val();
       if(myinput){
           if(myselect === '    '){
               $.post('/oneSearchResult',{moviename:myinput},function (ans) {
                   if(ans){
                       let str = '';
                       for (let i = 0; i < ans.length; i++) {
                           str += '
'; str += `![]($ans[i].moviemg)`; str += `

${ans[i].name}${ans[i].score}

`; str += `
`; } $(".ttx-movie-container").empty().append(str); } }); }else { $.post('/searchResult',{comment:myselect,moviename:myinput},function (ans) { if(ans){ let str = ''; for (let i = 0; i < ans.length; i++) { str += '
'; str += `![]($ans[i].moviemg)`; str += `

${ans[i].name}${ans[i].score}

`; str += `
`; } $(".ttx-movie-container").empty().append(str); } }); } }else { return bootbox.alert(" !"); } });
バックエンドサーバ
//           
app.post("/oneSearchResult",urlencodedParser, function (req, res) {
    let moviename=req.body.moviename;
    req.models.T_movie.find({name:orm.like("%"+moviename+"%")}, function (err, movies) {
        if (err) throw err;
        res.send(movies);
    });
});
/*              OK*/
app.post("/searchResult",urlencodedParser, function (req, res) {
    let moviename=req.body.moviename;
    let comment=req.body.comment;
    req.models.T_movie.find({name:orm.like("%"+moviename+"%"),comment:orm.like("%"+comment+"%")}, function (err, movies) {
        if (err) throw err;
        res.send(movies);
    });
});
html

  • は、プルダウンリストが されている を する
  • .
         let myselect = $('.cr-search-select').find("option:selected").html();
    
  • ブロック
  • を する.
        let myinput  = $('.cr-myinput').val();
    
  • の を にし、 をロードする
  • .
         $(".ttx-movie-container").empty().append(str);
    
  • 1 のデータを して、あいまいな
  • .
        req.models.T_movie.find({name:orm.like("%"+moviename+"%")}, function (err, movies) {
            if (err) throw err;
            res.send(movies);
        });
    
  • のボケ
  •     : {comment:myselect,moviename:myinput}
    
        : req.models.T_movie.find({name:orm.like("%"+moviename+"%"),comment:orm.like("%"+comment+"%")}, function (err, movies) {
            if (err) throw err;
            res.send(movies);
        });
    });
    
    ページ の
    のグループはurlパラメータを してページをまたいでデータを します.コアコードは の りです.
    の のトリガー をクリックして、urlにパラメータを します.
    function myonclickhrf(myid) {
        let myname = $('.ysj-login-name').html();
        if(myname){
            window.location.href = "/moviecontain.html?id="+myid+"&name="+myname
        }else {
            window.location.href = "/moviecontain.html?id="+myid+"&name="
        }
    }
    
    ここで、パラメータmyidは、バックグラウンドからのユーザIDであっても いし、htmlから したユーザIDであっても いし、 によっては なる.
    urlパラメータを り し、パラメータが する はユーザ をパラメータで し、 しない は を します.
    let myurl = window.location.href.split("?id=");
    myurl = [myurl[1].split('&name=')[1], myurl[1].split('&name=')[0]];
    if (myurl[0]) {
        $('.ysjLogin').html("  " + myurl[0]);
    } else {
        bootbox.alert("    ,          !");
        $('.ysjLogin').html("  ,  !");
    }
    
    urlパラメータでユーザー を することができます.
    がのびる
    その のページ メッセージング
  • ウィンドウオブジェクトのメッセージイベントで
  • を する.
                
    
     window.addEventListener('message',functio(){},false);
    
             
    
    otherwindow.postMessage(message,targetOrigin);
    
      message       ,           javascript  
    
      targetOrigin           url  
    
    other Windowは、ウィンドウオブジェクトの を するために、window.openを してオブジェクトに すことができます.または、window.frame に または を することによって、 のframeが するウィンドウオブジェクトに ります.
    gitを ったチームワークについて
    え :
    ローカル にはマスターとAnother(カスタム)の があります.リモート にもmasterとanotherの があります.なぜ たちは つの が ですか? のマスターで をするなら、リモート に する にチームメイトが しいコードを したら、 のマスターで します.(あなたが えたもの )コードはリモート のコードと って、gitはプッシュできないと します.そして、Pullを します.しかし、git pullを すると、またローカル のコードがリモート のコードを えていると します.チームメイトが する にリモートマスターのコードではなく、 が します.したがって、まずローカルのanotherで し、ローカルのmasterコードを する があります. のリモートmasterコードです. ができたら、ローカルのanotherをリモートのanotherに して、リモートのanotherとリモートのmasterを させて、git purl orgin masterを ってリモートのmasterをローカルのマスターに っ ります.
    (まとめ:ローカルマスターはリモートの バージョンです. のバージョンは しません.)
    ステップ:
  • git checkout-b another(ローカルanotherのブランチを し、anotherのブランチに る)
  • git add filePath( をローカル another のキャッシュエリアに )
  • git comit-m'text'(addの をローカル のanotherの に する)
  • git checkout master(anotherから してローカルマスターに る)
  • git pull origgimaster
  • git checkout another(ローカルマスターからローカルanotherに )
  • git rebase master( 5ステップのコードとローカルマスターの をリセットベースに )
  • で を します.
  • git psh origgin another(ローカルのanotherをリモートのanotherに させる)( な :git push origgin another:anotherは しないでください.あなたの はまだ されていません.githubは に します.)
  • purl requestをクリックして(リモート インターフェースで の に り、リモートmasterに してください)
  • コードを し、コードを し、マスター
  • に させる.
    に る