A mio parere è sempre più facile mantenere una separazione tra html, css e javascript e tenere tutto in file separati. 
 Per quanto riguarda la gestione di ajax, scrivo spesso il codice come oggetto letterale e creo un metodo ajax che è facile da usare e dove c'è un metodo simile sul lato server che analizza qualunque cosa decido di inviare, ecc. 
var main = {
    init: function() { // do stuff on page init
        this.events().render();
    },
    events: function() { // bind event handlers
        var self = this;
        $('#element').on('click', function() {
             var value = $('input.search').val();
             self.ajax('search', value).done(function(data) {
                  $('#results').html(data);
             });
        });
        return self;
    },
    render: function() {
        $('body').append('some elements').fadeIn(1000);
    },
    ajax: function(type, value) {
        return $.ajax({
             url : '/controller/ajax/',
             data: {type:type, value:value}
        });
    }
}