nodeを使用してhero小プロジェクトを行う(二)
18748 ワード
三、indexを完成する.htmlページ開発
3.1
app.js中
ブラウザまたはpostmanを使用して、すべてのヒーローを受信できるかどうかをテストします.
[外部チェーンピクチャの転送に失敗しました(img-SyQvX 8 A f-157857697489)(assets/1567818235874.png)]
実行
indexでhtmlで、コードを作成し、リクエストを送信します.
テンプレートコード
実行
4.1処理フォームフォームに欠落している項目があるかどうかを確認する 各項目にname属性があるかどうかをチェック コミットボタンがsubmitかbuttonかを見て、デフォルトの動作を阻止するかどうか に関連します.
4.2ローカル画像プレビュー
4.3フロントエンドは要求を送信し、データをインタフェースに提出し、追加を完了する
4.4サービス側がインタフェースの追加を完了
端末にmulterモジュール
app.jsでヒーローを追加するインタフェースを完了
body-parserを使うべきですか、それともmulterを使うべきですか.リクエストボディのフォーマット(リクエストヘッダのContent-Type) application/x-www-form-urlencoded serialize()を使用する場合、この符号化フォーマット になります. body-parser を使用
multipart/form-data FormDataを使用する場合、この符号化フォーマット になります. multer を使用
ヒーローを追加する場合は、ファイルアップロードがあるのでFormDataを使わなければなりません.Multierを使わなければなりません.
詳細については=>express/multer
3.1
getHeroes
インタフェースの完了app.js中
// =======================================================
//
// db
const db = require('./db');
// 1.
app.get('/getHeroes', (req, res) => {
// db ,
db('select * from heroes order by id desc', null, (err, result) => {
if (err) throw err;
//
res.send(result); // send js json ,
});
});
ブラウザまたはpostmanを使用して、すべてのヒーローを受信できるかどうかをテストします.
[外部チェーンピクチャの転送に失敗しました(img-SyQvX 8 A f-157857697489)(assets/1567818235874.png)]
実行
git add app.js
およびgit commit -m ' getHeroes , '
3.2フロントエンドはajax要求を送信し、応答したデータをページにレンダリングするindexでhtmlで、コードを作成し、リクエストを送信します.
$.get('/getHeroes', function (res) {
// console.log(res);
var str = template('muban', {
arr: res
});
$('tbody').html(str);
}, 'json')
テンプレートコード
<script id="muban" type="text/html">
{{each arr}}
<tr>
<td><img src="{{$value.file}}" alt="" /></td>
<td>{{$value.name}}</td>
<td>{{$value.skill}}</td>
<td>
<button onclick="location.href='./edit.html'" class="btn btn-primary"> </button>
<button onclick="alert(' ')" class="btn btn-danger"> </button>
</td>
</tr>
{{/each}}
</script>
実行
git add manager/index.html
およびgit commit -m ' getHeroes , '
四、新規の完成4.1処理フォーム
4.2ローカル画像プレビュー
$('#heroIcon').change(function () {
// 1.
// console.dir(this);
var fileObj = this.files[0];
// 2. url
var url = URL.createObjectURL(fileObj);
// 3. src url
$('.preview').attr('src', url);
})
4.3フロントエンドは要求を送信し、データをインタフェースに提出し、追加を完了する
$('.btn-success').click(function (e) {
e.preventDefault();
var formdata = new FormData($('form')[0]);
$.ajax({
type: 'POST',
url: '/addHero',
data: formdata,
dataType: 'json',
success: function (res) {
alert(res.msg);
if (res.code == 200) {
location.href = 'index.html';
}
},
contentType: false,
processData: false
});
});
4.4サービス側がインタフェースの追加を完了
端末にmulterモジュール
npm i multer
をインストールするapp.jsでヒーローを追加するインタフェースを完了
// 2.
// multer
const multer = require('multer');
// multer
const upload = multer({dest: 'upload/'});
app.post('/addhero', upload.single('heroIcon'), (req, res) => {
let sql = 'insert into heroes set ?';
let values = {
name: req.body.heroname,
nickname: req.body.heroNickName,
skill: req.body.skillName,
file: req.file.filename
};
db(sql, values, (err, result) => {
if (err) {
res.send({code: 201, message: ' '});
} else {
res.send({code: 200, message: ' '});
}
})
})
body-parserを使うべきですか、それともmulterを使うべきですか.
ヒーローを追加する場合は、ファイルアップロードがあるのでFormDataを使わなければなりません.Multierを使わなければなりません.
詳細については=>express/multer