St. John was incredibly awesome. I have been there many times and it never disappoints. We opted to head to St. John as we arrived in St. Thomas on New Year's Day along with 7 (yes SEVEN) other cruise ships and wanted to get away from the crowds. Though high surf prevented us from snorkeling everyone in our group felt this was the best port and best day of the cruise.
The shopping at the dock was good but the vendors and peddlers were very aggressive. Book transportation ahead of time and get out of the port area quickly. We're from New York so not much scares us but the aggressive drivers made threats to each other and to us. I've been to Antigua and know it's beautiful but my family ran (and I mean ran) back to the ship. Book an excursion or transportation ahead of time so you don't have to face the aggressive taxi line.
I know the Bahamas are lovely but Nassau was a disappointing port. Threatening, dark, gloomy, dirty. Very long lines for pier re-entry. It's not worth it - just stay on board and enjoy the ship's amenities, or book an excursion ahead of time.