Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
12
Cevap
1086
Tıklama
0
Öne Çıkarma
NodeJS Kullanımı
A
8 yıl
Yüzbaşı
Konu Sahibi

Merhabalar. Bir nodeJS kodunu komut penceresinden;

node deneme.js ile çalıştırabiliyoruz. Örneğin;

use strict";  
var fs = require("fs");
fs.readdir("deneme", function (ex, files)
{
if (ex) {
console.log(ex);
} else {
console.log(files);
}
})
;


kodu ile bir klasördeki dosyaların isimlerini listeliyor.

Benim sorum, bu js dosyasını html dosyası içinden nasıl çalıştıracağız? Yani deneme.html yazınca tarayıcıda klasördeki dosya isimleri görünsün istiyorum.

O isimleri elde ettiğim zaman <img src ile resimleri görüntüleyeceğim. Amacım bu.



A
8 yıl
Yüzbaşı
Konu Sahibi

Yok mu bir cevap?



< Bu ileti mobil sürüm kullanılarak atıldı >

S
8 yıl
Yarbay

Öncelikle node.js içerisinde Http Server oluşturman gerekiyor. Diyelim ki oluşturduğun bu server da 99 nolu porttan çalışıyor.


var http = require("http");
var server = http.createServer();
server.on('request', request);
server.listen(99);

function request(request, response) {
response.end("node.js server testi!");
};


"deneme.html" içerisinden bir AJAX isteğiyle http://localhost:99/ adresine istekte bulunman yeterli.


$.ajax({
url: 'http://localhost:99',
crossDomain: true,
}).done(function(data) {
console.log("node.js'den geri dönen cevap: " + data);
});





< Bu mesaj bu kişi tarafından değiştirildi snoppy -- 6 Şubat 2017; 22:15:17 >
Bu mesaja 1 cevap geldi.
A
8 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: snoppy

Öncelikle node.js içerisinde Http Server oluşturman gerekiyor. Diyelim ki oluşturduğun bu server da 99 nolu porttan çalışıyor.


var http = require("http");
var server = http.createServer();
server.on('request', request);
server.listen(99);

function request(request, response) {
response.end("node.js server testi!");
};


"deneme.html" içerisinden bir AJAX isteğiyle http://localhost:99/ adresine istekte bulunman yeterli.


$.ajax({
url: 'http://localhost:99',
crossDomain: true,
}).done(function(data) {
console.log("node.js'den geri dönen cevap: " + data);
});


Böyle mi olacak?
klasoroku.js
"use strict"; 
var fs = require("fs");
fs.readdir("deneme", function (ex, files)
{
if (ex) {
console.log(ex);
} else {
console.log(files);
}
});
var http = require("http");
var server = http.createServer();
server.on('request', request);
server.listen(2000,"127.0.0.1");

function request(request, response) {
response.end("node.js server testi!");
};



klasoroku.html
<html> 
<body>
<script type="text/javascript">
$.ajax({
url: 'http://localhost:2000',
crossDomain: true,
}).done(function(data) {
//console.log("node.js'den geri dönen cevap: " + data);
document.write("Gelen veri:" + data);
});
</script>
</body>
</html>



S
8 yıl
Yarbay

Klasör okuma işlemini "request" fonksiyonu içerisinde yapacaksın.

 
var fs = require("fs");
var http = require("http");

var server = http.createServer(function(request, response) {

response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader('Access-Control-Request-Method', '*');
response.setHeader('Access-Control-Allow-Methods', 'GET');
response.setHeader('Access-Control-Allow-Headers', '*');

fs.readdir('./muzikler/turkce/', function(error, data) {
if (error) {
throw error;
}
response.end(data.toString());
});

});

server.listen(2000);


Bu mesaja 1 cevap geldi.
A
8 yıl
Yüzbaşı
Konu Sahibi

quote:

Orijinalden alıntı: snoppy

Klasör okuma işlemini "request" fonksiyonu içerisinde yapacaksın.

 
var fs = require("fs");
var http = require("http");

var server = http.createServer(function(request, response) {

response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader('Access-Control-Request-Method', '*');
response.setHeader('Access-Control-Allow-Methods', 'GET');
response.setHeader('Access-Control-Allow-Headers', '*');

fs.readdir('./muzikler/turkce/', function(error, data) {
if (error) {
throw error;
}
response.end(data.toString());
});

});

server.listen(2000);


Hocam bu haliylehttp://127.0.0.1:2000 yazdığımda dosya isimlerini tarayıcıya yazıyor. Ancak ben dosya isimlerini bir dizide tutup, daha sonra random olarak bir kaç tanesini img etiketi ile görüntüleyeceğim. Bu nedenle bu dosya isimlerini html sayfasına nasıl gönderirim. Orada da java script içinde işlem yapmam lazım sanırım. Sonuçta kişi bu sayfayı görüntülerkenhttp://sddfsdfsdgf.com/oku.js değil, ....../oku.html olarak görüntüleyecek.



S
8 yıl
Yarbay


<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
// verilen diziyi karıştıran fonksiyon
function shuffle(a) {
var j, x, i;
for (i = a.length; i; i--) {
j = Math.floor(Math.random() * i);
x = a[i - 1];
a[i - 1] = a[j];
a[j] = x;
}
return a;
}

function dizinOku() {
$.ajax({
url: 'http://localhost:2000',
crossDomain: true,
}).done(function(data) {
// node.js'den geri dönen cevabı diziye dönüştürüyorum
data = data.split(',');
data = shuffle(data);

var temp = '';
$.each(data, function(i, val){
temp += '<li>' + val + '</li>';
});

// ekrana bastırma...
$('#dizinIcerik').html(temp);
});
}
</script>
</head>
<body>

<button onclick="dizinOku()">Dizin İçeriğini Listele</button>
<div id="dizinIcerik"></div>

</body>
</html>





< Bu mesaj bu kişi tarafından değiştirildi snoppy -- 10 Şubat 2017; 13:20:7 >

A
8 yıl
Yüzbaşı
Konu Sahibi

Aşağıdaki kod ile dediğim işi yaptım. Sayfa her yenilendiğinde, bir klasördeki 5 resim random alınıyor ve img ile gösteriliyor. Çok teşekkürler.

Son bir şey var. Ben bu resimlere nasıl link veririm. Ama şöyle olacak. Mesela resim dosyanın adı deneme1.jpg olsun. link:http://www.deneme1.com olacak. Yani link adresi resim adı olacak.


<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
// verilen diziyi karıştıran fonksiyon
function shuffle(a)
{
var j, x, i;
for (i = a.length; i; i--)
{
j = Math.floor(Math.random() * i);
x = a[i - 1];
a[i - 1] = a[j];
a[j] = x;
}
return a;
}
</script>
</head>
<body>
<script type="text/javascript">
$.ajax({
url: 'http://localhost:2000',
crossDomain: true,
}).done(function(data) {
// node.js'den geri dönen cevabı diziye dönüştürüyorum
data = data.split(',');
data = shuffle(data);
//$('#dizinIcerik').html(data.length);
var uz=data.length-1;
var resimler = new Array(uz);
var x=0;
do
{
var indis = Math.round(Math.random()*uz);
//$('#dizinIcerik').html(indis);
if(data[indis]!='Thumbs.db')
{
resimler[x]='firmalar/' + data[indis];
x=x+1;
}
} while(x<5);
var myImg1 = $('#res1');
myImg1.attr('src', resimler[0]);

var myImg2 = $('#res2');
myImg2.attr('src', resimler[1]);

var myImg3 = $('#res3');
myImg3.attr('src', resimler[2]);

var myImg4 = $('#res4');
myImg4.attr('src', resimler[3]);

var myImg5 = $('#res5');
myImg5.attr('src', resimler[4]);
});
</script>
<img id="res1" name="res1" width="100" height="50" />
<img id="res2" name="res2" width="100" height="50" />
<img id="res3" name="res3" width="100" height="50" />
<img id="res4" name="res4" width="100" height="50" />
<img id="res5" name="res5" width="100" height="50" />
</body>
</html>





< Bu mesaj bu kişi tarafından değiştirildi ayhan_sr -- 12 Şubat 2017; 23:55:41 >

A
8 yıl
Yüzbaşı
Konu Sahibi

Var mı bir fikriniz?



< Bu ileti mobil sürüm kullanılarak atıldı >

A
8 yıl
Yüzbaşı
Konu Sahibi

NodeJS'yi test etmek için örneğin;

Prompt üzerinde:

C:\>cd NodeJS

C:\NodeJS>node deneme.js

yazarak çalıştırıyor ve ilgili html yi görüntülüyoruz. Gerçek web sunucuda çalıştırmak için ne yapmalıyız. Çalıştıramadım.

Mesela bende, D:\NodeJS içinde yer alıyor dosyalar. Çalışmak için;
1) C:\>D:
D:\>cd NodeJS
D:\NodeJS>node oku.js

2) bu işlemden sonra oku.html dosyasının üzerine çift tıklıyorum. Amacıma uygun çalışıyor. Gerçek sunucuda bu işlem nasıl olacak?





< Bu mesaj bu kişi tarafından değiştirildi ayhan_sr -- 17 Şubat 2017; 9:49:7 >

T
8 yıl
Yarbay

Gerçek sunucuda da aynı şekilde çalışacak cunku (biliyorsundur) node web sunucu aynı zamanda. Sadece sunucu ortamında genelde ek betiklerle calıştırma yapılır , cunku tam amaca uygun çalışması için örneğin EngineYard'tan indirdiğim bir Node.js Chat programında çalıştırma betiği var şu sekilde:



1#!/usr/bin/env sh

2

3./node_modules/.bin/node-dev ./app.js





yani node-dev diye bir betik asıl uygulama olan app.js 'i calıştırıyor. node-dev de komut satırındaki argümanları kontrol eden ve ek kontroller vs. yapıp yeni proses başlatan bi betik: (DH Forum mini sürümünde code seçeneğini bulamadım o yüzden direkt metin olarak gönderiyorum maalesef : ; )



#! /usr/bin/env node

var spawn = require('child_process').spawn;

var env = process.env;

var node = process.argv[0];



/* Pass the location of the node-dev script to the child process */

env.NODE_DEV = process.argv[1];



var args = process.argv.slice(2);



if (!args.length) {

console.log('Usage: node-dev [options] script.js [arguments]\n');

process.exit(1);

}



/** Find the first arg that is not an option */

for (var i=0; i < args.length; i++) {

if (!/^-/.test(args)) {

args.splice(i, 0, __dirname + '/wrapper.js');

break;

}

}



function start() {

var child = spawn(node, args, {

cwd: process.cwd(),

env: env,

customFds: [0, 1, 2]

});

child.on('exit', function(code) {

if (code === 101) {

process.nextTick(start);

}

else {

process.exit(code);

}

});

}



start();



< Bu ileti mini sürüm kullanılarak atıldı >

A
8 yıl
Yüzbaşı
Konu Sahibi

Sonuç olarak, bu kodları app.js adıyla oluşturup, çalıştırmak istediğim diğer js ve html dosyalarının olduğu dizine mi atacağım?



T
8 yıl
Yarbay

yo öyle birşey demedim, yıllar önce denediğim hazır kod lardan ufak bir örnek verdim sadece. yoksa her duruma göre çalıştırna yöntemi farklı olabilir. bu süreçte seni biraz Google ve StackOverflow ara(ştır)maları bekler :)



< Bu ileti mini sürüm kullanılarak atıldı >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.